Revision 2328 org.gvsig.raster/branches/org.gvsig.raster_dataaccess_refactoring/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/util/persistence/PersistencyFilterParam.java

View differences:

PersistencyFilterParam.java
21 21
*/
22 22
package org.gvsig.raster.util.persistence;
23 23

  
24
import java.lang.reflect.Constructor;
25
import java.lang.reflect.InvocationTargetException;
24 26
import java.util.ArrayList;
25 27

  
26 28
import org.gvsig.fmap.dal.coverage.datastruct.Params;
......
28 30
import org.gvsig.fmap.dal.coverage.exception.FilterTypeException;
29 31
import org.gvsig.fmap.dal.coverage.grid.RasterFilterList;
30 32
import org.gvsig.fmap.dal.coverage.grid.RasterFilterListManager;
33
import org.gvsig.raster.impl.grid.filter.DefaultRasterFilterList;
31 34
import org.gvsig.tools.ToolsLocator;
32 35
import org.gvsig.tools.dynobject.DynStruct;
36
import org.gvsig.tools.extensionpoint.ExtensionPoint;
37
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
33 38
import org.gvsig.tools.persistence.PersistenceManager;
34 39
import org.gvsig.tools.persistence.Persistent;
35 40
import org.gvsig.tools.persistence.PersistentState;
36 41
import org.gvsig.tools.persistence.exception.PersistenceException;
42
import org.slf4j.Logger;
43
import org.slf4j.LoggerFactory;
37 44

  
38 45
/**
39 46
 * Parameters to persist a filter
40 47
 * @author Nacho Brodin (nachobrodin@gmail.com)
41 48
 */
42 49
public class PersistencyFilterParam implements Persistent {
43
	String filterName   = null;
44
	Params filterParam  = null;
45
	Class<?>  filterClass  = null;
50
	private Logger    log                   = LoggerFactory.getLogger(PersistencyFilterParam.class);
51
	private String    filterName            = null;
52
	private Params    filterParam           = null;
53
	private String    managerExtensionName  = null;
54
	private Class<?>  filterClass           = null;
46 55

  
47
	/**
48
	 * @return the filterName
49
	 */
50 56
	public String getFilterName() {
51 57
		return filterName;
52 58
	}
53 59

  
54
	/**
55
	 * @param filterName the filterName to set
56
	 */
57 60
	public void setFilterName(String filterName) {
58 61
		this.filterName = filterName;
59 62
	}
60 63

  
61
	/**
62
	 * @return the filterParam
63
	 */
64 64
	public Params getFilterParam() {
65 65
		return filterParam;
66 66
	}
67 67

  
68
	/**
69
	 * @param filterParam the filterParam to set
70
	 */
71 68
	public void setFilterParam(Params filterParam) {
72 69
		this.filterParam = filterParam;
73 70
	}
74 71

  
75
	/**
76
	 * @return the filterClass
77
	 */
78 72
	public Class<?> getFilterClass() {
79 73
		return filterClass;
80 74
	}
81 75

  
82
	/**
83
	 * @param filterClass the filterClass to set
84
	 */
85
	public void setFilterClass(Class<?> filterClass) {
86
		this.filterClass = filterClass;
76
	public String getManagerExtensionName() {
77
		return managerExtensionName;
87 78
	}
79

  
80
	public void setManagerExtensionName(String managerExtensionName) {
81
		this.managerExtensionName = managerExtensionName;
82
	}
83

  
88 84
	
89 85
	/**
90 86
	 * Sustituye la lista de filtros de filterList por la que le pasamos en forma
......
109 105
	public void loadFromState(PersistentState state) throws PersistenceException {
110 106
		this.filterName = state.getString("filtername");
111 107
		this.filterParam = (Params)state.get("params");
112
		String filterclass = state.getString("filterclass");
113
		try {
114
			this.filterClass = Class.forName(filterclass);
108
		this.managerExtensionName = state.getString("managerExtensionName");
109
		this.filterClass = getFilterClass(filterName, managerExtensionName);
110
		/*try {
111
			
112
			ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
113
			ExtensionPoint point = extensionPoints.get("RasterFilter");
114
			Class<?> c = point.get("RegionAlpha").getExtension();
115
			Class<?>[] args = { RasterFilterList.class };
116
			Constructor<?> hazNuevo = c.getConstructor(args);
117
			RasterFilterListManager obj = (RasterFilterListManager)hazNuevo.newInstance(new DefaultRasterFilterList());
118
			this.filterClass = obj.getFilterClassByID(filterName);
119
			
120
			this.filterClass = getFilterClass(filterName, managerExtensionName);
115 121
		} catch (ClassNotFoundException e) {
116 122
			//filterClass = null;
123
		} catch (IllegalArgumentException e) {
124
			// TODO Auto-generated catch block
125
			e.printStackTrace();
126
		} catch (InstantiationException e) {
127
			// TODO Auto-generated catch block
128
			e.printStackTrace();
129
		} catch (IllegalAccessException e) {
130
			// TODO Auto-generated catch block
131
			e.printStackTrace();
132
		} catch (InvocationTargetException e) {
133
			// TODO Auto-generated catch block
134
			e.printStackTrace();
135
		} catch (SecurityException e) {
136
			// TODO Auto-generated catch block
137
			e.printStackTrace();
138
		} catch (NoSuchMethodException e) {
139
			// TODO Auto-generated catch block
140
			e.printStackTrace();
141
		}*/
142
	}
143
	
144
	private Class<?> getFilterClass(String filterName, String managerExtensionName) {
145
		try {
146
			ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
147
			ExtensionPoint point = extensionPoints.get("RasterFilter");
148
			Class<?> c = point.get(managerExtensionName).getExtension();
149
			Class<?>[] args = { RasterFilterList.class };
150
			Constructor<?> hazNuevo = c.getConstructor(args);
151
			RasterFilterListManager obj = (RasterFilterListManager)hazNuevo.newInstance(new DefaultRasterFilterList());
152
			return obj.getFilterClassByID(filterName);
153
		} catch (IllegalArgumentException e) {
154
			log.debug("Error loading filter class", e);
155
		} catch (InstantiationException e) {
156
			log.debug("Error loading filter class", e);
157
		} catch (IllegalAccessException e) {
158
			log.debug("Error loading filter class", e);
159
		} catch (InvocationTargetException e) {
160
			log.debug("Error loading filter class", e);
161
		} catch (SecurityException e) {
162
			log.debug("Error loading filter class", e);
163
		} catch (NoSuchMethodException e) {
164
			log.debug("Error loading filter class", e);
117 165
		}
166
		return null;
118 167
	}
119 168

  
120 169
	public void saveToState(PersistentState state) throws PersistenceException {
121 170
		state.set("filtername", filterName);
122 171
		state.set("params", filterParam);
123
		state.set("filterclass", filterClass.getName());
172
		state.set("managerExtensionName", managerExtensionName);
124 173
	}
125 174

  
126 175
	public static void registerPersistence() {
......
133 182
				null, 
134 183
				null
135 184
		);
136
		definition.addDynFieldString("filtername").setMandatory(false);
137
		definition.addDynFieldObject("params").setClassOfValue(Params.class).setMandatory(false);
138
		definition.addDynFieldString("filterclass").setMandatory(false);
185
		definition.addDynFieldString("filtername")
186
		.setMandatory(false);
187
		
188
		definition.addDynFieldObject("params")
189
		.setClassOfValue(Params.class)
190
		.setMandatory(false);
191
		
192
		definition.addDynFieldString("filterclass")
193
		.setMandatory(false);
194
		
195
		definition.addDynFieldString("managerExtensionName")
196
		.setMandatory(false);
139 197
	}
198

  
140 199
}

Also available in: Unified diff