Revision 10376 trunk/extensions/extExpressionField/src/com/iver/cit/gvsig/ExpresionFieldExtension.java
ExpresionFieldExtension.java | ||
---|---|---|
1 | 1 |
package com.iver.cit.gvsig; |
2 | 2 |
|
3 |
import java.util.ArrayList; |
|
3 | 4 |
import java.util.BitSet; |
5 |
import java.util.Iterator; |
|
4 | 6 |
|
5 | 7 |
import org.apache.bsf.BSFManager; |
6 | 8 |
|
7 | 9 |
import com.iver.andami.PluginServices; |
8 | 10 |
import com.iver.andami.plugins.Extension; |
9 | 11 |
import com.iver.cit.gvsig.gui.FieldExpresionPage; |
12 |
import com.iver.cit.gvsig.project.documents.table.IOperator; |
|
10 | 13 |
import com.iver.cit.gvsig.project.documents.table.gui.EvalExpresionDialog; |
11 | 14 |
import com.iver.cit.gvsig.project.documents.table.gui.Table; |
12 | 15 |
import com.iver.cit.gvsig.project.documents.table.operators.Abs; |
... | ... | |
57 | 60 |
import com.iver.cit.gvsig.project.documents.table.operators.ToString; |
58 | 61 |
import com.iver.cit.gvsig.project.documents.table.operators.ToUpperCase; |
59 | 62 |
import com.iver.cit.gvsig.project.documents.table.operators.Trim; |
63 |
import com.iver.utiles.extensionPoints.ExtensionPoint; |
|
60 | 64 |
import com.iver.utiles.extensionPoints.ExtensionPoints; |
61 | 65 |
import com.iver.utiles.extensionPoints.ExtensionPointsSingleton; |
66 |
import com.iver.utiles.swing.threads.AbstractMonitorableTask; |
|
62 | 67 |
/** |
63 | 68 |
* @author Vicente Caballero Navarro |
64 | 69 |
*/ |
... | ... | |
67 | 72 |
public static final String BEANSHELL="beanshell"; |
68 | 73 |
private static BSFManager interpreter=new BSFManager(); |
69 | 74 |
private Table table=null; |
75 |
private static ArrayList operators=new ArrayList(); |
|
70 | 76 |
public void initialize() { |
71 | 77 |
ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance(); |
72 | 78 |
extensionPoints.add("cad_editing_properties_pages","fieldExpresion",FieldExpresionPage.class); |
... | ... | |
76 | 82 |
public void execute(String actionCommand) { |
77 | 83 |
com.iver.andami.ui.mdiManager.IWindow window = PluginServices.getMDIManager().getActiveWindow(); |
78 | 84 |
table=(Table)window; |
79 |
EvalExpresionDialog eed=new EvalExpresionDialog(table,interpreter); |
|
80 |
PluginServices.getMDIManager().addWindow(eed); |
|
85 |
if (operators.isEmpty()) { |
|
86 |
PluginServices.cancelableBackgroundExecution(new EvalOperatorsTask()); |
|
87 |
}else{ |
|
88 |
EvalExpresionDialog eed=new EvalExpresionDialog(table,interpreter,operators); |
|
89 |
PluginServices.getMDIManager().addWindow(eed); |
|
90 |
} |
|
91 |
|
|
81 | 92 |
} |
82 | 93 |
public void postInitialize() { |
83 | 94 |
} |
... | ... | |
152 | 163 |
extensionPoints.add("ColumnOperators",ToUpperCase.class.toString(),ToUpperCase.class); |
153 | 164 |
extensionPoints.add("ColumnOperators",Trim.class.toString(),Trim.class); |
154 | 165 |
} |
166 |
private class EvalOperatorsTask extends AbstractMonitorableTask{ |
|
167 |
private ExtensionPoint extensionPoint; |
|
168 |
public EvalOperatorsTask(){ |
|
169 |
setInitialStep(0); |
|
170 |
setDeterminatedProcess(true); |
|
171 |
setStatusMessage(PluginServices.getText(this, "charging_operators")); |
|
172 |
ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance(); |
|
173 |
extensionPoint =(ExtensionPoint)extensionPoints.get("ColumnOperators"); |
|
174 |
setFinalStep(extensionPoint.size()+1); |
|
175 |
} |
|
176 |
public void run() throws Exception { |
|
177 |
long t1=System.currentTimeMillis(); |
|
178 |
Iterator iterator = extensionPoint.keySet().iterator(); |
|
179 |
while (iterator.hasNext()) { |
|
180 |
try { |
|
181 |
IOperator operator = (IOperator)extensionPoint.create((String)iterator.next()); |
|
155 | 182 |
|
183 |
operator.eval(interpreter); |
|
184 |
operators.add(operator); |
|
185 |
reportStep(); |
|
186 |
} catch (InstantiationException e) { |
|
187 |
e.printStackTrace(); |
|
188 |
} catch (IllegalAccessException e) { |
|
189 |
e.printStackTrace(); |
|
190 |
} catch (ClassCastException e) { |
|
191 |
e.printStackTrace(); |
|
192 |
} |
|
193 |
} |
|
194 |
long t2=System.currentTimeMillis(); |
|
195 |
System.out.println("Tiempo en evaluar y crear del extension point = "+(t2-t1) ); |
|
196 |
long t3=System.currentTimeMillis(); |
|
197 |
System.out.println("Tiempo en a?adir los operadores correctos = "+(t3-t2) ); |
|
198 |
EvalExpresionDialog eed=new EvalExpresionDialog(table,interpreter,operators); |
|
199 |
reportStep(); |
|
200 |
PluginServices.getMDIManager().addWindow(eed); |
|
201 |
} |
|
202 |
|
|
203 |
} |
|
204 |
|
|
156 | 205 |
} |
Also available in: Unified diff