MultiLine Class

package javaxt.geospatial.geometry;

//******************************************************************************
//**  MultiLine Class - By Peter Borissow
//******************************************************************************
/**
 *   Enter class description
 *
 ******************************************************************************/

public class MultiLine implements Geometry {
    
    
    private String srs = "EPSG:4326";
    private java.util.Vector Lines = new java.util.Vector();
    
  //**************************************************************************
  //** Creates a new instance of MultiLine
  //**************************************************************************
    
    public MultiLine(){
    }
    
    
    
  //**************************************************************************
  //** getSRS
  //**************************************************************************
  //** Sets the srs attribute for this Geometry. */
    
    public void setSRS(String srsName){
        if (srsName==null) srs = "";
        else srs = srsName.trim();
    }
    
    
  //**************************************************************************
  //** getSRS
  //**************************************************************************
  //** Returns the srs name of this Geometry. */
    
    public String getSRS(){
        return srs;
    }
    
    
  //**************************************************************************
  //** getName
  //**************************************************************************
  //** Returns the name of this Geometry. */
    
    public String getName(){ 
        return new Geometry.Name(this).toString(); 
    }
    
    
  //**************************************************************************
  //** addLine
  //**************************************************************************
  //** Used to add a line to the MultiLine Geometry */
    
    public void addLine(Line line){
        if (line!=null) Lines.add(line);
    }
    
    
  //**************************************************************************
  //** getLines
  //**************************************************************************
  //** Used to retrieve an array of lines that comprise this Geometry */
    
    public Line[] getLines(){
        Object[] arr = Lines.toArray();
        Line[] ret = new Line[arr.length];
        for (int i=0; i<arr.length; i++){
             ret[i] = (Line) arr[i];
        }
        return ret;
    }
    
  //**************************************************************************
  //** toString
  //**************************************************************************
  /** Used to return a Well-known Text (WKT) representation of the lines. */
    
    public String toString(){
        Line[] Lines = getLines();
        if (Lines==null || Lines.length<=0) return null;
        else{
            StringBuffer Coordinates = new StringBuffer();
            Coordinates.append("MULTILINESTRING(");
            for (int i=0; i<Lines.length; i++){
                 Coordinates.append("((" + Lines[i].toString(" ", ", ") + "))");
                 if (i<Lines.length-1) Coordinates.append(",");
            }
            Coordinates.append(")");
            return Coordinates.toString().trim();
        }
    }
    
    
  //**************************************************************************
  //** toGML
  //**************************************************************************
  /**  Used to convert a MultiLine to GML (xml fragment) */
    
    public String toGML(){
        Line[] Lines = getLines();
        if (Lines==null) return "";
        else{
            String srsName = " srsName=\"" + srs + "\"";
            if (srs.length()==0) srsName = "";
            
            StringBuffer Coordinates = new StringBuffer();
            Coordinates.append("<gml:MultiLineString" + srsName + ">");
            for (int i=0; i<Lines.length; i++){
                 Line line = Lines[i];
                 Coordinates.append("<gml:lineStringMember>");
                 Coordinates.append("<gml:LineString>");
                 Coordinates.append("<gml:coordinates>");
                 Coordinates.append(line.toString(",", " "));
                 Coordinates.append("</gml:coordinates>");
                 Coordinates.append("</gml:LineString>");
                 Coordinates.append("</gml:lineStringMember>");
            }

            Coordinates.append("</gml:MultiLineString>");
            return Coordinates.toString().trim();
        }
    }
    
}