pgpath.java

来自「PostgreSQL7.4.6 for Linux」· Java 代码 · 共 165 行

JAVA
165
字号
/*------------------------------------------------------------------------- * * PGpath.java *     This implements a path (a multiple segmented line, which may be closed) * * Copyright (c) 2003, PostgreSQL Global Development Group * * IDENTIFICATION *	  $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/geometric/Attic/PGpath.java,v 1.6 2003/09/13 04:02:15 barry Exp $ * *------------------------------------------------------------------------- */package org.postgresql.geometric;import org.postgresql.util.PGobject;import org.postgresql.util.PGtokenizer;import org.postgresql.util.PSQLException;import org.postgresql.util.PSQLState;import java.io.Serializable;import java.sql.SQLException;public class PGpath extends PGobject implements Serializable, Cloneable{	/*	 * True if the path is open, false if closed	 */	public boolean open;	/*	 * The points defining this path	 */	public PGpoint points[];	/*	 * @param points the PGpoints that define the path	 * @param open True if the path is open, false if closed	 */	public PGpath(PGpoint[] points, boolean open)	{		this();		this.points = points;		this.open = open;	}	/*	 * Required by the driver	 */	public PGpath()	{		setType("path");	}	/*	 * @param s definition of the circle in PostgreSQL's syntax.	 * @exception SQLException on conversion failure	 */	public PGpath(String s) throws SQLException	{		this();		setValue(s);	}	/*	 * @param s Definition of the path in PostgreSQL's syntax	 * @exception SQLException on conversion failure	 */	public void setValue(String s) throws SQLException	{		// First test to see if were open		if (s.startsWith("[") && s.endsWith("]"))		{			open = true;			s = PGtokenizer.removeBox(s);		}		else if (s.startsWith("(") && s.endsWith(")"))		{			open = false;			s = PGtokenizer.removePara(s);		}		else			throw new PSQLException("postgresql.geo.path", PSQLState.DATA_TYPE_MISMATCH);		PGtokenizer t = new PGtokenizer(s, ',');		int npoints = t.getSize();		points = new PGpoint[npoints];		for (int p = 0;p < npoints;p++)			points[p] = new PGpoint(t.getToken(p));	}	/*	 * @param obj Object to compare with	 * @return true if the two boxes are identical	 */	public boolean equals(Object obj)	{		if (obj instanceof PGpath)		{			PGpath p = (PGpath)obj;			if (p.points.length != points.length)				return false;			if (p.open != open)				return false;			for (int i = 0;i < points.length;i++)				if (!points[i].equals(p.points[i]))					return false;			return true;		}		return false;	}	/*	 * This must be overidden to allow the object to be cloned	 */	public Object clone()	{		PGpoint ary[] = new PGpoint[points.length];		for (int i = 0;i < points.length;i++)			ary[i] = (PGpoint)points[i].clone();		return new PGpath(ary, open);	}	/*	 * This returns the polygon in the syntax expected by org.postgresql	 */	public String getValue()	{		StringBuffer b = new StringBuffer(open ? "[" : "(");		for (int p = 0;p < points.length;p++)		{			if (p > 0)				b.append(",");			b.append(points[p].toString());		}		b.append(open ? "]" : ")");		return b.toString();	}	public boolean isOpen()	{		return open;	}	public boolean isClosed()	{		return !open;	}	public void closePath()	{		open = false;	}	public void openPath()	{		open = true;	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?