/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cismap.commons.featureservice; /** * DOCUMENT ME! * * @author thorsten.hell@cismet.de * @version $Revision$, $Date$ */ public class SimpleFeatureServiceSqlStatement { //~ Static fields/initializers --------------------------------------------- public static final String ALL_FIELDS_TOKEN = "<cismap::AllFields>"; // NOI18N public static final String X1_TOKEN = "<cismap::x1>"; // NOI18N public static final String Y1_TOKEN = "<cismap::y1>"; // NOI18N public static final String X2_TOKEN = "<cismap::x2>"; // NOI18N public static final String Y2_TOKEN = "<cismap::y2>"; // NOI18N //~ Instance fields -------------------------------------------------------- /** Creates a new instance of SimpleFeatureServiceSqlStatement. */ String sqlTemplate; String allFieldsToken; String x1Token; String y1Token; String x2Token; String y2Token; private String allFields = ""; // NOI18N private double x1 = 0; private double y1 = 0; private double x2 = 0; private double y2 = 0; private String orderBy = ""; // NOI18N //~ Constructors ----------------------------------------------------------- /** * Creates a new SimpleFeatureServiceSqlStatement object. * * @param sqlTemplate DOCUMENT ME! */ public SimpleFeatureServiceSqlStatement(final String sqlTemplate) { this.sqlTemplate = sqlTemplate; this.allFieldsToken = ALL_FIELDS_TOKEN; this.x1Token = X1_TOKEN; this.y1Token = Y1_TOKEN; this.x2Token = X2_TOKEN; this.y2Token = Y2_TOKEN; } /** * Creates a new SimpleFeatureServiceSqlStatement object. * * @param sqlTemplate DOCUMENT ME! * @param allFieldsToken DOCUMENT ME! * @param x1Token DOCUMENT ME! * @param y1Token DOCUMENT ME! * @param x2Token DOCUMENT ME! * @param y2Token DOCUMENT ME! */ public SimpleFeatureServiceSqlStatement(final String sqlTemplate, final String allFieldsToken, final String x1Token, final String y1Token, final String x2Token, final String y2Token) { this.sqlTemplate = sqlTemplate; this.allFieldsToken = allFieldsToken; this.x1Token = x1Token; this.y1Token = y1Token; this.x2Token = x2Token; this.y2Token = y2Token; } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public double getX1() { return x1; } /** * DOCUMENT ME! * * @param x1 DOCUMENT ME! */ public void setX1(final double x1) { this.x1 = x1; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public double getY1() { return y1; } /** * DOCUMENT ME! * * @param y1 DOCUMENT ME! */ public void setY1(final double y1) { this.y1 = y1; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public double getX2() { return x2; } /** * DOCUMENT ME! * * @param x2 DOCUMENT ME! */ public void setX2(final double x2) { this.x2 = x2; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public double getY2() { return y2; } /** * DOCUMENT ME! * * @param y2 DOCUMENT ME! */ public void setY2(final double y2) { this.y2 = y2; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getFeaturesStatement() { String ret = sqlTemplate; ret = sqlTemplate.replaceAll(allFieldsToken, allFields); ret = ret.replaceAll(x1Token, x1 + ""); // NOI18N ret = ret.replaceAll(y1Token, y1 + ""); // NOI18N ret = ret.replaceAll(x2Token, x2 + ""); // NOI18N ret = ret.replaceAll(y2Token, y2 + ""); // NOI18N return ret + " " + orderBy; // NOI18N } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getCountFeaturesStatement() { String ret = sqlTemplate; ret = ret.replaceAll(allFieldsToken, "count(*)"); // NOI18N ret = ret.replaceAll(x1Token, x1 + ""); // NOI18N ret = ret.replaceAll(y1Token, y1 + ""); // NOI18N ret = ret.replaceAll(x2Token, x2 + ""); // NOI18N ret = ret.replaceAll(y2Token, y2 + ""); // NOI18N return ret; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getAllFields() { return allFields; } /** * DOCUMENT ME! * * @param allFields DOCUMENT ME! */ public void setAllFields(final String allFields) { this.allFields = allFields; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getSqlTemplate() { return sqlTemplate; } /** * DOCUMENT ME! * * @param args DOCUMENT ME! */ public static void main(final String[] args) { final SimpleFeatureServiceSqlStatement sqlStatement = new SimpleFeatureServiceSqlStatement( "select <cismap::AllFields> from geom, cs_all_attr_mapping where geom.id=attr_object_id and attr_class_id=0 and class_id=11 and geom.geo_field && GeomFromText('BOX3D(<cismap::x1> <cismap::y1>,<cismap::x2> <cismap::y2>)',-1)", // NOI18N "<cismap::AllFields>", "<cismap::x1>", "<cismap::y1>", "<cismap::x2>", "<cismap::y2>"); // NOI18N sqlStatement.setAllFields( "'Kassenzeichen' as Type,object_id as GroupingKey, object_id as ObjectName,geo_field as Geom"); // NOI18N sqlStatement.setX1(1); sqlStatement.setY1(2); sqlStatement.setX2(3); sqlStatement.setY2(4); // System.out.println(sqlStatement.getCountFeaturesStatement()); // System.out.println(sqlStatement.getFeaturesStatement()); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getOrderBy() { return orderBy; } /** * DOCUMENT ME! * * @param orderBy DOCUMENT ME! */ public void setOrderBy(final String orderBy) { this.orderBy = orderBy; } }