Revision 23917

View differences:

trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/rendering/styling/labeling/DefaultLabelingMethod.java
118 118

  
119 119
	public IFeatureIterator getFeatureIteratorByLabelClass(FLyrVect layer, LabelClass lc, ViewPort viewPort, String[] usedFields)
120 120
	throws ReadDriverException {
121
		String sqlFields = "";
122
		for (int i = 0; i < usedFields.length; i++) {
123
			sqlFields += usedFields[i];
124
			if (i < usedFields.length -1) sqlFields += ", ";
121

  
122
		if(lc.isUseSqlQuery()){
123
			String sqlFields = "";
124
			for (int i = 0; i < usedFields.length; i++) {
125
				sqlFields += usedFields[i];
126
				if (i < usedFields.length -1) sqlFields += ", ";
127
			}
128
			String fieldNames[] = layer.getSource().getRecordset().getFieldNames();
129
			StringBuilder sql = new StringBuilder();
130
			sql.append("select ");
131
			for (int i=0; i<fieldNames.length-1; i++) {
132
				sql.append(fieldNames[i]);
133
				sql.append(",");
134
			}
135
			sql.append(fieldNames[fieldNames.length-1]);
136
			sql.append(" from ");
137
			sql.append(layer.getRecordset().getName());
138
			sql.append(" where ");
139
			sql.append(lc.getSQLQuery());
140
			sql.append(";");
141
			return layer.getSource().getFeatureIterator(sql.toString(), layer.getProjection());
125 142
		}
126
		String fieldNames[] = layer.getSource().getRecordset().getFieldNames();
127
		StringBuilder sql = new StringBuilder();
128
		sql.append("select ");
129
		for (int i=0; i<fieldNames.length-1; i++) {
130
			sql.append(fieldNames[i]);
131
			sql.append(",");
143
		else {
144
			return layer.getSource().getFeatureIterator(
145
					viewPort.getAdjustedExtent(), usedFields,
146
					layer.getProjection(), true);
132 147
		}
133
		sql.append(fieldNames[fieldNames.length-1]);
134
		sql.append(" from ");
135
		sql.append(layer.getRecordset().getName());
136
		sql.append(" where ");
137
		sql.append(lc.getSQLQuery());
138
		sql.append(";");
139
		return layer.getSource().getFeatureIterator(sql.toString(), layer.getProjection());
140 148
	}
141 149

  
142 150
	public boolean definesPriorities() {
trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/rendering/styling/labeling/LabelClass.java
147 147
	private int priority;
148 148
	private double scale = 1;
149 149
	private String sqlQuery;
150
	private boolean useSqlQuery = false;
150 151

  
152

  
151 153
	/**
152 154
	 * Returns true if the label will be showed in the map
153 155
	 *
......
457 459
		xml.putProperty("unit", getUnit());
458 460
		xml.putProperty("referenceSystem", getReferenceSystem());
459 461
		xml.putProperty("priority", getPriority());
462
		xml.putProperty("useSqlQuery",isUseSqlQuery());
460 463

  
461 464
		if (texts != null) {
462 465
			xml.putProperty("texts", texts);
......
489 492
				(ITextSymbol) SymbologyFactory.
490 493
				createSymbolFromXML(xml.firstChild("id", "TextSymbol"), null));
491 494

  
495
		if(xml.contains("useSqlQuery")){
496
			setUseSqlQuery(xml.getBooleanProperty("useSqlQuery"));
497
		}
498

  
492 499
		if (xml.contains("texts")) {
493 500
			setTexts(xml.getStringArrayProperty("texts"));
494 501
		}
......
580 587
	public void setSQLQuery(String sqlQuery) {
581 588
		this.sqlQuery = sqlQuery;
582 589
	}
590

  
591
	public boolean isUseSqlQuery() {
592
		return useSqlQuery;
593
	}
594

  
595
	public void setUseSqlQuery(boolean useSqlQuery) {
596
		this.useSqlQuery = useSqlQuery;
597
	}
583 598
}

Also available in: Unified diff