Revision 1118

View differences:

org.gvsig.raster.postgis/tags/buildNumber_6/distribution/distribution.xml
1
<assembly>
2
</assembly>
0 3

  
org.gvsig.raster.postgis/tags/buildNumber_6/org.gvsig.raster.postgis.io/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.raster.postgis.io.DefaultPostGISRasterIOLibrary
org.gvsig.raster.postgis/tags/buildNumber_6/org.gvsig.raster.postgis.io/src/main/java/org/gvsig/raster/postgis/io/DefaultPostGISRasterIOLibrary.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.postgis.io;
23

  
24
import org.gvsig.fmap.dal.DALFileLibrary;
25
import org.gvsig.fmap.dal.DALLibrary;
26
import org.gvsig.raster.impl.store.AbstractRasterFileDataParameters;
27
import org.gvsig.tools.ToolsLibrary;
28
import org.gvsig.tools.library.AbstractLibrary;
29
import org.gvsig.tools.library.Library;
30
import org.gvsig.tools.library.LibraryException;
31
/**
32
 *
33
 * @author Nacho Brodin (nachobrodin@gmail.com)
34
 */
35
public class DefaultPostGISRasterIOLibrary extends AbstractLibrary {	
36

  
37
	public DefaultPostGISRasterIOLibrary() {
38
		super(DefaultPostGISRasterIOLibrary.class,Library.TYPE.IMPL);
39
		require(ToolsLibrary.class);
40
		require(DALLibrary.class);
41
		require(DALFileLibrary.class);
42
	}
43
	
44
	@Override
45
	protected void doInitialize() throws LibraryException {
46
		//RasterLibrary.wakeUp();
47
	}
48

  
49
	@Override
50
	protected void doPostInitialize() throws LibraryException {
51
		PostGISRasterServerExplorerParameters.registerDynClass();
52
		
53
		PostGISRasterProvider.register();
54
		PostGISRasterDataParameters.registerDynClass();
55
		PostGISRasterDataParameters.registerPersistence();
56
	}
57
}
0 58

  
org.gvsig.raster.postgis/tags/buildNumber_6/org.gvsig.raster.postgis.io/src/main/java/org/gvsig/raster/postgis/io/PostGISRasterCoreException.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.postgis.io;
23

  
24
/**
25
 * This exception is thrown when the pool of threads fails
26
 *
27
 * @author Nacho Brodin (nachobrodin@gmail.com)
28
 */
29
public class PostGISRasterCoreException extends Exception {
30
	private static final long serialVersionUID = 1L;
31
	
32
	String message;
33

  
34
	public PostGISRasterCoreException() {
35
		super();
36
	}
37

  
38
	/**
39
	 * Crea ThreadPoolException.
40
	 *
41
	 * @param message
42
	 */
43
	public PostGISRasterCoreException(String message) {
44
        super();
45
        this.message = message;
46
	}
47

  
48
	/**
49
	 * Crea ThreadPoolException.
50
	 *
51
	 * @param message
52
	 * @param cause
53
	 */
54
	public PostGISRasterCoreException(String message, Throwable cause) {
55
		super(format(message, 200), cause);
56
	}
57

  
58
	/**
59
	  * Crea ThreadPoolException.
60
	 *
61
	 * @param cause
62
	 */
63
	public PostGISRasterCoreException(Throwable cause) {
64
		super(cause);
65
	}
66
    
67
    /**
68
     * Cuts the message text to force its lines to be shorter or equal to 
69
     * lineLength.
70
     * @param message, the message.
71
     * @param lineLength, the max line length in number of characters.
72
     * @return the formated message.
73
     */
74
    private static String format(String message, int lineLength){
75
        if (message.length() <= lineLength) return message;
76
        String[] lines = message.split("\n");
77
        String theMessage = "";
78
        for (int i = 0; i < lines.length; i++) {
79
            String line = lines[i].trim();
80
            if (line.length()<lineLength)
81
                theMessage += line+"\n";
82
            else {
83
                String[] chunks = line.split(" ");
84
                String newLine = "";
85
                for (int j = 0; j < chunks.length; j++) {
86
                    int currentLength = newLine.length();
87
                    chunks[j] = chunks[j].trim();
88
                    if (chunks[j].length()==0)
89
                        continue;
90
                    if ((currentLength + chunks[j].length() + " ".length()) <= lineLength)
91
                        newLine += chunks[j] + " ";
92
                    else {
93
                        newLine += "\n"+chunks[j]+" ";
94
                        theMessage += newLine;
95
                        newLine = "";
96
                    }
97
                }
98
                
99
            }
100
        }
101
        return theMessage;
102
    }
103
}
0 104

  
org.gvsig.raster.postgis/tags/buildNumber_6/org.gvsig.raster.postgis.io/src/main/java/org/gvsig/raster/postgis/io/PostGISRasterServerExplorer.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22

  
23
package org.gvsig.raster.postgis.io;
24

  
25
import java.util.List;
26

  
27
import org.gvsig.fmap.dal.DALLocator;
28
import org.gvsig.fmap.dal.DataManager;
29
import org.gvsig.fmap.dal.DataServerExplorerParameters;
30
import org.gvsig.fmap.dal.DataStoreParameters;
31
import org.gvsig.fmap.dal.NewDataStoreParameters;
32
import org.gvsig.fmap.dal.exception.DataException;
33
import org.gvsig.fmap.dal.exception.InitializeException;
34
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
35
import org.gvsig.fmap.dal.spi.DataServerExplorerProvider;
36
import org.gvsig.fmap.dal.spi.DataServerExplorerProviderServices;
37

  
38
/**
39
 * Server explorer for a PostGIS raster server
40
 * @author Nacho Brodin (nachobrodin@gmail.com)
41
 */
42
 @SuppressWarnings("unchecked")
43
public class PostGISRasterServerExplorer implements DataServerExplorerProvider {
44
	public static final String                    NAME                     = PostGISRasterProvider.NAME;
45
	private PostGISRasterServerExplorerParameters parameters               = null;
46
	
47
	public PostGISRasterServerExplorer(
48
			PostGISRasterServerExplorerParameters parameters,
49
			DataServerExplorerProviderServices services)
50
			throws InitializeException {
51
		this.parameters = parameters;
52
	}
53
	
54
	public DataServerExplorerProviderServices getServerExplorerProviderServices() {
55
		return null;
56
	}
57

  
58
	public boolean add(String provider, NewDataStoreParameters parameters,
59
			boolean overwrite) throws DataException {
60
		return false;
61
	}
62

  
63
	public boolean canAdd() {
64
		return false;
65
	}
66

  
67
	public boolean canAdd(String storeName) throws DataException {
68
		return false;
69
	}
70

  
71
	public NewDataStoreParameters getAddParameters(String storeName)
72
			throws DataException {
73
		return null;
74
	}
75

  
76
	public List getDataStoreProviderNames() {
77
		return null;
78
	}
79

  
80
	public DataServerExplorerParameters getParameters() {
81
		return null;
82
	}
83

  
84
	public String getProviderName() {
85
		return null;
86
	}
87

  
88
	public List list() throws DataException {
89
		return null;
90
	}
91

  
92
	public List list(int mode) throws DataException {
93
		return null;
94
	}
95

  
96
	public void remove(DataStoreParameters parameters) throws DataException {
97
		
98
	}
99

  
100
	public void dispose() {
101
		
102
	}
103
	
104
	public DataStoreParameters getStoreParameters() throws PostGISRasterCoreException {
105
		DataManager manager = DALLocator.getDataManager();
106
		PostGISRasterDataParameters params = null;
107
		try {
108
			params = (PostGISRasterDataParameters) manager.createStoreParameters(PostGISRasterProvider.NAME);
109
			params.setURI(parameters.getHost());
110
		} catch (InitializeException e) {
111
			throw new PostGISRasterCoreException("Error initializating parameters", e);
112
		} catch (ProviderNotRegisteredException e) {
113
			throw new PostGISRasterCoreException("Provider not registered", e);
114
		}
115
		return params;
116
	}
117
	
118
}
0 119

  
org.gvsig.raster.postgis/tags/buildNumber_6/org.gvsig.raster.postgis.io/src/main/java/org/gvsig/raster/postgis/io/PostGISRasterProvider.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.postgis.io;
23

  
24
import java.awt.geom.AffineTransform;
25
import java.util.ArrayList;
26
import java.util.Collections;
27
import java.util.Iterator;
28
import java.util.List;
29

  
30
import org.gvsig.fmap.dal.DALLocator;
31
import org.gvsig.fmap.dal.DataManager;
32
import org.gvsig.fmap.dal.DataStore;
33
import org.gvsig.fmap.dal.coverage.RasterLocator;
34
import org.gvsig.fmap.dal.coverage.dataset.Buffer;
35
import org.gvsig.fmap.dal.coverage.datastruct.BandList;
36
import org.gvsig.fmap.dal.coverage.datastruct.DatasetBand;
37
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
38
import org.gvsig.fmap.dal.coverage.exception.BandNotFoundInListException;
39
import org.gvsig.fmap.dal.coverage.exception.NotSupportedExtensionException;
40
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
41
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException;
42
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
43
import org.gvsig.fmap.dal.exception.DataException;
44
import org.gvsig.fmap.dal.exception.InitializeException;
45
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
46
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
47
import org.gvsig.fmap.dal.serverexplorer.db.DBServerExplorer;
48
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
49
import org.gvsig.fmap.dal.spi.DataStoreProviderServices;
50
import org.gvsig.fmap.dal.store.db.DBStoreParameters;
51
import org.gvsig.metadata.MetadataLocator;
52
import org.gvsig.raster.cache.tile.provider.TileListener;
53
import org.gvsig.raster.gdal.io.GdalDataParameters;
54
import org.gvsig.raster.gdal.io.GdalProvider;
55
import org.gvsig.raster.impl.buffer.DefaultRasterQuery;
56
import org.gvsig.raster.impl.datastruct.BandListImpl;
57
import org.gvsig.raster.impl.datastruct.DatasetBandImpl;
58
import org.gvsig.raster.impl.provider.DefaultRasterProvider;
59
import org.gvsig.raster.impl.store.AbstractRasterDataParameters;
60
import org.gvsig.raster.impl.store.DefaultStoreFactory;
61
import org.gvsig.tools.ToolsLocator;
62
import org.gvsig.tools.extensionpoint.ExtensionPoint;
63
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
64
import org.gvsig.tools.task.Cancellable;
65
import org.gvsig.tools.task.TaskStatus;
66
import org.slf4j.Logger;
67
import org.slf4j.LoggerFactory;
68
/**
69
 * This class represents the data access just for PostGIS raster databases.
70
 * @author Nacho Brodin (nachobrodin@gmail.com)
71
 */
72
public class PostGISRasterProvider extends GdalProvider {
73
	public static String           NAME                     = "PostGIS Raster Store";
74
	public static String           DESCRIPTION              = "PostGIS Raster file";
75
	public static final String     METADATA_DEFINITION_NAME = "PostGISRasterStore";
76
	private static final String    OVERVIEW_PREFIX          = "o_";
77
	
78
	private DBServerExplorer       dbServerExplorer         = null;
79
	private DBStoreParameters      dbParameters             = null;
80
	private ArrayList<Overview>    overviews                = null;
81
	private DataManager            dataManager              = DALLocator.getDataManager();
82
	private DefaultRasterProvider  selectedProvider         = null;
83
	private Overview               mainOverview             = null;
84
	private static Logger          logger                   = LoggerFactory.getLogger(PostGISRasterProvider.class.getName());
85
	
86
	class Overview implements Comparable<Overview> {
87
		public int                         width               = 0;
88
		public int                         height              = 0;
89
		public int                         factor              = 0;
90
		public double                      pxSizeOverview      = 0;
91
		public DefaultRasterProvider       provider            = null;
92
		
93
		public Overview() {
94
			
95
		}
96
		
97
		public Overview(int f, int w, int h, PostGISRasterDataParameters p) throws NotSupportedExtensionException {
98
			this.width = w;
99
			this.height = h;
100
			this.factor = f;
101
			if(p != null)
102
				createProvider(p);
103
			this.pxSizeOverview = getExtent().width() / (double)w;
104
		}
105
		
106
		public void createProvider(PostGISRasterDataParameters p) throws NotSupportedExtensionException {
107
			GdalDataParameters gdalParams = new GdalDataParameters();
108
			gdalParams.setURI(p.getURI());
109
			try {
110
				this.provider = new GdalProvider(gdalParams, storeServices);
111
			} catch (NotSupportedExtensionException e) {
112
				logger.info("===>" + gdalParams.getURI() + " " + e.getMessage(), e);
113
			}
114
			this.width = (int)provider.getWidth();
115
			this.height = (int)provider.getHeight();
116
			this.pxSizeOverview = provider.getExtent().width() / (double)this.width;
117
		}
118
		
119
		public int compareTo(Overview o) {
120
			if(factor < o.factor)
121
				return -1;
122
			if(factor > o.factor)
123
				return 1;
124
			return 0;
125
		}
126
	}
127
	
128
	public static void register() {
129
		RasterLocator.getManager().registerFileProvidersTiled(PostGISRasterProvider.class);
130
		
131
		DataManagerProviderServices dataman = (DataManagerProviderServices) DALLocator.getDataManager();
132
		if (dataman != null && !dataman.getStoreProviders().contains(NAME)) {
133
			dataman.registerStoreProvider(NAME,
134
					PostGISRasterProvider.class, PostGISRasterDataParameters.class);
135
		}
136

  
137
		if (!dataman.getExplorerProviders().contains(PostGISRasterProvider.NAME)) {
138
			dataman.registerExplorerProvider(PostGISRasterServerExplorer.NAME, PostGISRasterServerExplorer.class, PostGISRasterServerExplorerParameters.class);
139
		}
140
		dataman.registerStoreFactory(NAME, DefaultStoreFactory.class);
141
	}
142
	
143
	public PostGISRasterProvider() {
144
		
145
	}
146
	
147
	public PostGISRasterProvider (PostGISRasterDataParameters params,
148
			DataStoreProviderServices storeServices) throws NotSupportedExtensionException {
149
		super(params, storeServices, ToolsLocator.getDynObjectManager()
150
				.createDynObject(
151
						MetadataLocator.getMetadataManager().getDefinition(
152
								DataStore.METADATA_DEFINITION_NAME)));
153
		init(params, storeServices);
154
	}
155
	
156
	/**
157
	 * Creates data base references and loads structures with the information and metadata
158
	 * @param params load parameters
159
	 * @throws NotSupportedExtensionException
160
	 */
161
	public void init (AbstractRasterDataParameters params,
162
			DataStoreProviderServices storeServices) throws NotSupportedExtensionException {
163
		try {
164
			setParam(storeServices, params);
165
			mainOverview = new Overview();
166
			mainOverview.createProvider((PostGISRasterDataParameters)param);
167
			mainOverview.factor = 1;
168
			file = ((GdalProvider)mainOverview.provider).getNative();
169
			setColorInterpretation(file.getColorInterpretation());
170
			setColorTable(file.getColorTable());
171
			noData = file.getNoDataValue();
172
			wktProjection = file.getProjectionRef();
173
			//CrsWkt crs = new CrsWkt(wktProjection);
174
			//IProjection proj = CRSFactory.getCRS("EPSG:23030");
175
			ownTransformation = file.getOwnTransformation();
176
			externalTransformation = (AffineTransform)ownTransformation.clone();
177
			bandCount = file.getRasterCount();
178
			load();
179
		} catch (Exception e) {
180
			throw new NotSupportedExtensionException("Gdal library can't be initialized with this PostGIS raster parameters", e);
181
		} 
182

  
183
		//Obtenemos el tipo de dato de gdal y lo convertimos el de RasterBuf
184
		int[] dt = new int[file.getDataType().length];
185
		for (int i = 0; i < dt.length; i++)
186
			dt[i] = rasterUtil.getRasterBufTypeFromGdalType(file.getDataType()[i]);
187
		setDataType(dt);
188
		
189
		PostGISRasterDataParameters p = (PostGISRasterDataParameters)params;
190
		//Object obj = p.getDynValue(PostGISRasterDataParameters.FIELD_DBPARAMS);
191
		dbParameters = (DBStoreParameters)p.getDynValue(PostGISRasterDataParameters.FIELD_DBPARAMS);
192
		dbServerExplorer = (DBServerExplorer)p.getDynValue(PostGISRasterDataParameters.FIELD_DBEXPLORER);
193
	}
194
	
195
	/*
196
	 * (non-Javadoc)
197
	 * @see org.gvsig.raster.impl.provider.RasterProvider#getRMFFile()
198
	 */
199
	public String getRMFFile() {
200
		if(uri.startsWith("PG:host=")) {
201
			String uri = getURI().replace("'", "");
202
			return uri + ".rmf";
203
		} else 
204
			return fileUtil.getNameWithoutExtension(uri) + ".rmf";
205
	}
206
	
207
	/**
208
	 * Reads overviews from database. The overviews in PostGIS raster are loaded 
209
	 * in separated tables. The name of those tables is the same that the original table
210
	 * with a overview prefix. Now this prefix is "o_X_" where the X is a factor scale.
211
	 * 
212
	 * For that reason the overview object contains the DataParameter which correspond
213
	 * to each table.
214
	 * @throws DataException 
215
	 * @throws DataException
216
	 */
217
	@SuppressWarnings("unchecked")
218
	private void readOverviews() throws DataException  {
219
		if(overviews == null) {
220
			overviews = new ArrayList<Overview>();
221
			String mainHost = ((PostGISRasterDataParameters)param).getURI();
222

  
223
			String mainTable = dbParameters.getTable();
224
			List parameters = dbServerExplorer.list();
225

  
226
			int mainFactor = 1; 
227
				
228
			if(isOverview(mainTable, mainTable)) {
229
				mainFactor = getFactor(mainTable);
230
			}
231
			overviews.add(mainOverview);
232
			
233
			Iterator iter = parameters.iterator();
234
			while (iter.hasNext()) {
235
				DBStoreParameters p = (DBStoreParameters) iter.next();
236
				String tname = p.getTable();
237

  
238
				try {
239
					if(isOverview(mainTable, tname)) {
240
						Overview o = new Overview();
241
						o.factor = (getFactor(tname) / mainFactor);
242
						o.width = (int)(getWidth() / o.factor);
243
						o.height = (int)(getHeight() / o.factor);
244
						o.pxSizeOverview = getExtent().width() / (double)o.width;
245
						o.createProvider(createParameters(mainHost, mainTable, tname));
246
						overviews.add(o);
247
					}
248
				} catch (NumberFormatException e) {
249
				} catch (PostGISRasterCoreException e) {
250
				} catch (ValidateDataParametersException e) {
251
				} catch (NotSupportedExtensionException e) {
252
				}
253
			}
254
			Collections.sort(overviews);
255
		}
256
	}
257
	
258
	/**
259
	 * Returns true if tname is an overview of mainTable
260
	 * @param mainTable
261
	 * @param tname
262
	 * @return
263
	 */
264
	private boolean isOverview(String mainTable, String tname) throws NumberFormatException {
265
		if(mainTable.compareTo(tname) != 0) {
266
			return ((tname.endsWith(mainTable) && tname.startsWith(OVERVIEW_PREFIX)) ||
267
					(tname.startsWith(OVERVIEW_PREFIX) && mainTable.startsWith(OVERVIEW_PREFIX) && getFactor(tname) > getFactor(mainTable)));
268
		}
269
		return false;
270
	}
271
	
272
	/**
273
	 * Gets the overview factor number reading the name of the table
274
	 * @param tname
275
	 * @return
276
	 * @throws NumberFormatException
277
	 */
278
	private int getFactor(String tname) throws NumberFormatException {
279
		String factor = tname.substring(tname.indexOf('_') + 1);
280
		factor = factor.substring(0, factor.indexOf('_'));
281
		return new Integer(factor);
282
	}
283
	
284
	/**
285
	 * Creates the list of parameters
286
	 * @param mainHost
287
	 * @param mainTable
288
	 * @param tableName
289
	 * @return
290
	 * @throws PostGISRasterCoreException 
291
	 * @throws PostGISRasterCoreException
292
	 * @throws ProviderNotRegisteredException 
293
	 * @throws InitializeException 
294
	 * @throws ValidateDataParametersException 
295
	 */
296
	@SuppressWarnings("deprecation")
297
	private PostGISRasterDataParameters createParameters(String mainHost, String mainTable, String tableName) throws PostGISRasterCoreException, ValidateDataParametersException, InitializeException, ProviderNotRegisteredException {
298
		String newHost = mainHost.replaceFirst(mainTable, tableName);
299
		
300
		PostGISRasterServerExplorerParameters explorerParams = (PostGISRasterServerExplorerParameters) dataManager.createServerExplorerParameters(PostGISRasterServerExplorer.NAME);
301
		explorerParams.setHost(newHost);
302
		PostGISRasterServerExplorer explorer = (PostGISRasterServerExplorer) dataManager.createServerExplorer(explorerParams);
303
		RasterDataParameters storeParameters = (RasterDataParameters)explorer.getStoreParameters();
304
		storeParameters.setURI(newHost);
305
		return (PostGISRasterDataParameters)storeParameters;
306
	}
307
	
308
	/**
309
	 * Selects the right overview. The right overview means the first 
310
	 * one with a pixel size lesser or equals than the original. 
311
	 * @param pixels
312
	 * @param mts
313
	 */
314
	private void overviewSelector(int pixels, double mts) {
315
		this.selectedProvider = overviews.get(overviews.size() - 1).provider;
316
		//System.out.println("*************" + overviews.get(overviews.size() - 1).pxSizeOverview + "**************");
317
		double pxSizeRequest = mts / (double)pixels;
318
		for (int i = overviews.size() - 1; i > 0; i--) {
319
			Overview ovb = overviews.get(i);
320
			if(pxSizeRequest <= ovb.pxSizeOverview) {
321
				this.selectedProvider = ovb.provider;
322
				//System.out.println(ovb.pxSizeOverview);
323
			}
324
		}
325
		//System.out.println("***************************");
326
	}
327
	
328
	/*
329
	 * (non-Javadoc)
330
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(double, double, double, double, int, int, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.raster.cache.tile.provider.TileListener)
331
	 */
332
	public void getWindow(Extent ex, int bufWidth, int bufHeight, 
333
			BandList bandList, TileListener listener, Cancellable status) throws ProcessInterruptedException, RasterDriverException {
334
//		PostGISRasterDataParameters p = (PostGISRasterDataParameters)param;
335
//		Buffer buf = RasterLocator.getManager().createBuffer(getDataType()[0], bufWidth, bufHeight, getBandCount(), true);
336
//		TileCacheManager m = TileCacheLocator.getManager();
337
//		Tile tile = m.createTile(-1, 0, 0);
338
//		
339
//		//Creamos un BandList con todas las bandas del fichero
340
//		BandList bl = new BandListImpl();
341
//		for(int i = 0; i < getBandCount(); i++) {
342
//			try {
343
//				DatasetBand band = new DatasetBandImpl(selectedProvider.getURIOfFirstProvider(), i, getDataType()[i], getBandCount());
344
//				bl.addBand(band, i);
345
//			} catch(BandNotFoundInListException e) {
346
//				//No a?adimos la banda
347
//			}
348
//		}
349
//		
350
//		if(p.getNumberOfBlocks() > 1) {
351
//			for (int i = 0; i < p.getNumberOfBlocks(); i++) {
352
//				GdalNative gdal;
353
//				try {
354
//					gdal = new GdalNative(p.getURI() + " column='rast' where='rid = " + i + "'");
355
//					gdal.readWindow(buf, bandList, 0, 0, gdal.width, gdal.height, bufWidth, bufHeight);
356
//					Extent ext = gdal.getExtentWithoutRot();
357
//					tile.setUl(new Point2D.Double(ext.getULX(), ext.getULY()));
358
//					tile.setLr(new Point2D.Double(ext.getLRX(), ext.getLRY()));
359
//					tile.setData(new Object[]{buf, null, null});
360
//					listener.tileReady(tile);
361
//				} catch (GdalException e) {
362
//					throw new RasterDriverException("", e);
363
//				} catch (IOException e) {
364
//					throw new RasterDriverException("", e);
365
//				} catch (TileGettingException e) {
366
//					throw new RasterDriverException("", e);
367
//				}
368
//			}
369
//		}
370
		super.getWindow(ex, bufWidth, bufHeight, bandList, listener, status);
371
	}
372

  
373
	/*
374
	 * (non-Javadoc)
375
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(org.gvsig.fmap.dal.coverage.datastruct.Extent, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.fmap.dal.coverage.dataset.Buffer)
376
	 */
377
	public Buffer getWindow(Extent ex, BandList bandList, Buffer rasterBuf, TaskStatus status) 
378
		throws ProcessInterruptedException, RasterDriverException {
379
		return super.getWindow(ex, bandList, rasterBuf, status);
380
	}
381

  
382
	/*
383
	 * (non-Javadoc)
384
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(double, double, double, double, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.fmap.dal.coverage.dataset.Buffer, boolean)
385
	 */
386
	public Buffer getWindow(double ulx, double uly, double w, double h, 
387
			BandList bandList, Buffer rasterBuf, boolean adjustToExtent, TaskStatus status) throws ProcessInterruptedException, RasterDriverException {
388
		return super.getWindow(ulx, uly, w, h, bandList, rasterBuf, adjustToExtent, status);
389
	}
390

  
391
	/*
392
	 * (non-Javadoc)
393
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(double, double, double, double, int, int, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.fmap.dal.coverage.dataset.Buffer, boolean)
394
	 */
395
	public Buffer getWindow(Extent extent, 
396
			int bufWidth, int bufHeight, BandList bandList, Buffer rasterBuf, boolean adjustToExtent) throws ProcessInterruptedException, RasterDriverException {
397

  
398
		try {
399
			readOverviews();
400
		} catch (DataException e) {
401
			throw new RasterDriverException("Overviews can't be read", e);
402
		}
403

  
404
		overviewSelector(bufWidth, extent.width());
405
		//Creamos un BandList con todas las bandas del fichero
406
		BandList bl = new BandListImpl();
407
		for(int i = 0; i < getBandCount(); i++) {
408
			try {
409
				DatasetBand band = new DatasetBandImpl(selectedProvider.getURIOfFirstProvider(), i, getDataType()[i], getBandCount());
410
				bl.addBand(band, i);
411
			} catch(BandNotFoundInListException e) {
412
				//No a?adimos la banda
413
			}
414
		}
415
		bl.setDrawableBands(bandList.getDrawableBands());
416

  
417
		DefaultRasterQuery q = (DefaultRasterQuery)RasterLocator.getManager().createQuery();
418
		q.setAreaOfInterest(extent, bufWidth, bufHeight);
419
		q.setBandList(bandList);
420
		q.setBuffer(rasterBuf);
421
		q.setAdjustToExtent(adjustToExtent);
422
		return selectedProvider.getDataSet(q);
423
	}
424

  
425
	/*
426
	 * (non-Javadoc)
427
	 * @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(int, int, int, int, int, int, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.fmap.dal.coverage.dataset.Buffer)
428
	 */
429
	public Buffer getWindow(int x, int y, int w, int h, 
430
			int bufWidth, int bufHeight, BandList bandList, Buffer rasterBuf, TaskStatus status) throws ProcessInterruptedException, RasterDriverException {
431
		return super.getWindow(x, y, w, h, bandList, rasterBuf, status);
432
	}
433

  
434
	/*
435
	 * (non-Javadoc)
436
	 * @see org.gvsig.raster.impl.provider.RasterProvider#isTiled()
437
	 */
438
	/*public boolean isTiled() {
439
		PostGISRasterDataParameters p = (PostGISRasterDataParameters)param;
440
		return p.getNumberOfBlocks() > 1;
441
	}*/
442

  
443
}
0 444

  
org.gvsig.raster.postgis/tags/buildNumber_6/org.gvsig.raster.postgis.io/src/main/java/org/gvsig/raster/postgis/io/PostGISRasterServerExplorerParameters.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22

  
23
package org.gvsig.raster.postgis.io;
24

  
25
import org.gvsig.fmap.dal.DataServerExplorerParameters;
26
import org.gvsig.fmap.dal.spi.AbstractDataParameters;
27
import org.gvsig.tools.ToolsLocator;
28
import org.gvsig.tools.dataTypes.DataTypes;
29
import org.gvsig.tools.dynobject.DelegatedDynObject;
30
import org.gvsig.tools.dynobject.DynClass;
31
import org.gvsig.tools.dynobject.DynField;
32
import org.gvsig.tools.dynobject.DynObjectManager;
33

  
34
/**
35
 * Parameters for the PostGIS Raster provider
36
 * @author Nacho Brodin (nachobrodin@gmail.com)
37
 */
38
public class PostGISRasterServerExplorerParameters extends AbstractDataParameters implements DataServerExplorerParameters {
39
	public static final String     DYNCLASS_NAME       = "PostGISRasterServerExplorerParameters";
40
	protected static final String  FIELD_HOST          = "host";
41
	protected static DynClass      DYNCLASS            = null;
42
	private DelegatedDynObject     delegatedDynObject  = null;
43
	
44
	public PostGISRasterServerExplorerParameters() {
45
		super();
46
		initialize();
47
	}
48

  
49
	protected void initialize() {
50
		this.delegatedDynObject = (DelegatedDynObject) ToolsLocator
51
				.getDynObjectManager().createDynObject(
52
						DYNCLASS);
53
	}
54
	
55
	@SuppressWarnings("deprecation")
56
	public static void registerDynClass() {
57
		DynObjectManager dynman = ToolsLocator.getDynObjectManager();
58
		DynClass dynClass;
59
		DynField field;
60
		
61
		if(dynman == null)
62
			return;
63
		
64
		if (DYNCLASS == null) {
65
			dynClass = dynman.add(DYNCLASS_NAME);
66

  
67
			field = dynClass.addDynField(FIELD_HOST);
68
			field.setTheTypeOfAvailableValues(DynField.ANY);
69
			field.setDescription("Uniform Resource Identifier (File name or URL)");
70
			field.setType(DataTypes.STRING);
71
			field.setMandatory(true);
72
			
73
			DYNCLASS = dynClass;
74
		}
75

  
76
	}
77
	
78
	protected DelegatedDynObject getDelegatedDynObject() {
79
		return delegatedDynObject;
80
	}
81
	
82
	/**
83
	 * Gets the assigned host
84
	 * @return
85
	 */
86
	public String getHost() {
87
		return (String) this.getDynValue(FIELD_HOST);
88
	}
89

  
90
	/**
91
	 * Assign the host to this explorer
92
	 * @param host
93
	 */
94
	public void setHost(String host) {
95
		this.setDynValue(FIELD_HOST, host);
96
	}
97

  
98
	/*
99
	 * (non-Javadoc)
100
	 * @see org.gvsig.fmap.dal.DataStoreParameters#getDataStoreName()
101
	 */
102
	public String getDataStoreName() {
103
		return PostGISRasterProvider.NAME;
104
	}
105
	
106
	/*
107
	 * (non-Javadoc)
108
	 * @see org.gvsig.fmap.dal.DataStoreParameters#getDescription()
109
	 */
110
	public String getDescription() {
111
		return PostGISRasterProvider.DESCRIPTION;
112
	}
113

  
114
	public String getExplorerName() {
115
		return PostGISRasterProvider.NAME;
116
	}
117
}
0 118

  
org.gvsig.raster.postgis/tags/buildNumber_6/org.gvsig.raster.postgis.io/src/main/java/org/gvsig/raster/postgis/io/PostGISRasterDataParameters.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22

  
23
package org.gvsig.raster.postgis.io;
24

  
25
import org.gvsig.fmap.dal.DataParameters;
26
import org.gvsig.fmap.dal.serverexplorer.db.DBServerExplorer;
27
import org.gvsig.raster.impl.store.AbstractRasterDataParameters;
28
import org.gvsig.tools.ToolsLocator;
29
import org.gvsig.tools.dynobject.DelegatedDynObject;
30
import org.gvsig.tools.dynobject.DynClass;
31
import org.gvsig.tools.dynobject.DynField;
32
import org.gvsig.tools.dynobject.DynObjectManager;
33
import org.gvsig.tools.dynobject.DynStruct;
34
import org.gvsig.tools.persistence.PersistenceManager;
35
import org.gvsig.tools.persistence.PersistentState;
36
import org.gvsig.tools.persistence.exception.PersistenceException;
37

  
38
/**
39
 * Parameters for the PostGIS provider
40
 * @author Nacho Brodin (nachobrodin@gmail.com)
41
 */
42
public class PostGISRasterDataParameters extends AbstractRasterDataParameters {
43
	public static final String         DYNCLASS_NAME                = "PostGISRasterDataParameters";
44
	protected DelegatedDynObject       delegatedDynObject           = null;
45
	private static DynClass            DYNCLASS                     = null;
46
	public static final String         FIELD_DBPARAMS               = "DBPARAMS";
47
	public static final String         FIELD_DBEXPLORER             = "DBEXPLORER";
48
	protected static final String      FIELD_BLOCKS                 = "BLOCKS";
49
	
50
	public static void registerDynClass() {
51
		DynObjectManager dynman = ToolsLocator.getDynObjectManager();
52
		DynClass dynClass;
53
		DynField field;
54
		
55
		if(dynman == null)
56
			return;
57
		
58
		if (DYNCLASS == null) {
59
			dynClass = AbstractRasterDataParameters.registerDynClass(DYNCLASS_NAME);
60
			
61
			field = dynClass.addDynFieldObject(FIELD_DBPARAMS);
62
			field.setDescription("Parameters for the selected table");
63
			field.setClassOfValue(Object.class);
64
			field.setMandatory(false);
65
			
66
			field = dynClass.addDynFieldObject(FIELD_DBEXPLORER);
67
			field.setDescription("Explorer for databases");
68
			field.setClassOfValue(Object.class);
69
			field.setMandatory(false);
70
			
71
			field = dynClass.addDynFieldLong(FIELD_BLOCKS);
72
			field.setDescription("Number of blocks of the selected table.");
73
			field.setClassOfValue(Long.class);
74
			field.setMandatory(true);
75
			
76
			DYNCLASS = dynClass;
77
		}
78
	}
79
	
80
	public PostGISRasterDataParameters() {
81
		super();
82
		initialize();
83
	}
84
	
85
	protected void initialize() {
86
		this.delegatedDynObject = (DelegatedDynObject) ToolsLocator
87
				.getDynObjectManager().createDynObject(
88
						DYNCLASS);
89
	}
90
	
91
	/*
92
	 * (non-Javadoc)
93
	 * @see org.gvsig.fmap.dal.DataStoreParameters#getDataStoreName()
94
	 */
95
	public String getDataStoreName() {
96
		return PostGISRasterProvider.NAME;
97
	}
98

  
99
	/*
100
	 * (non-Javadoc)
101
	 * @see org.gvsig.fmap.dal.DataStoreParameters#getDescription()
102
	 */
103
	public String getDescription() {
104
		return PostGISRasterProvider.DESCRIPTION;
105
	}
106

  
107
	/*
108
	 * (non-Javadoc)
109
	 * @see org.gvsig.raster.impl.store.AbstractRasterDataParameters#loadFromState(org.gvsig.tools.persistence.PersistentState)
110
	 */
111
	public void loadFromState(PersistentState state)
112
	throws PersistenceException {
113
		super.loadFromState(state);
114
	}
115

  
116
	/*
117
	 * (non-Javadoc)
118
	 * @see org.gvsig.raster.impl.store.AbstractRasterDataParameters#saveToState(org.gvsig.tools.persistence.PersistentState)
119
	 */
120
	public void saveToState(PersistentState state) throws PersistenceException {
121
		super.saveToState(state);
122
	}	
123

  
124
	public static void registerPersistence() {
125
		PersistenceManager manager = ToolsLocator.getPersistenceManager();
126
		DynStruct definition = manager.getDefinition("PostGISRasterDataParameters_Persistent");
127
		if( definition == null ) {
128
			definition = manager.addDefinition(
129
					PostGISRasterDataParameters.class,
130
					"PostGISRasterDataParameters_Persistent",
131
					"PostGISRasterDataParameters Persistent",
132
					null, 
133
					null
134
			);
135
			AbstractRasterDataParameters.registerPersistence(definition);
136
		}
137
	}
138

  
139
	@Override
140
	protected DelegatedDynObject getDelegatedDynObject() {
141
		return delegatedDynObject;
142
	}
143

  
144
	public boolean isOverridingHost() {
145
		return false;
146
	}
147

  
148
	public void setOverrideHost(boolean over) {
149
		
150
	}
151
	
152
	public DataParameters getDBStoreParameters() {
153
		return (DataParameters) this.getDynValue(FIELD_DBPARAMS);
154
	}
155
	
156
	public void setDBStoreParameters(DataParameters dbStoreParameters) {
157
		this.setDynValue(FIELD_DBPARAMS, dbStoreParameters);
158
	}
159
	
160
	public DBServerExplorer getDBExplorer() {
161
		return (DBServerExplorer) this.getDynValue(FIELD_DBEXPLORER);
162
	}
163
	
164
	public void setDBExplorer(DBServerExplorer dbStoreParameters) {
165
		this.setDynValue(FIELD_DBEXPLORER, dbStoreParameters);
166
	}
167
	
168
	/**
169
	 * Gets the number of blocks of the selected table
170
	 * @return
171
	 */
172
	public long getNumberOfBlocks() {
173
		return (Long) this.getDynValue(FIELD_BLOCKS);
174
	}
175

  
176
	/**
177
	 * Gets the number of blocks of the selected table
178
	 * @param host
179
	 */
180
	public void setNumberOfBlocks(long blocks) {
181
		this.setDynValue(FIELD_BLOCKS, blocks);
182
	}
183
}
0 184

  
org.gvsig.raster.postgis/tags/buildNumber_6/org.gvsig.raster.postgis.io/pom.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4
	<modelVersion>4.0.0</modelVersion>
5
	<artifactId>org.gvsig.raster.postgis.io</artifactId>
6
	<packaging>jar</packaging>
7
	<name>org.gvsig.raster.postgis.io</name>
8
	<version>1.0.0-SNAPSHOT</version>
9
	<parent>
10
		<groupId>org.gvsig</groupId>
11
		<artifactId>gvsig-base-library-pom</artifactId>
12
		<version>2.0-SNAPSHOT</version>
13
	</parent>
14
    <properties>
15
        <build-dir>${basedir}/../../build</build-dir>
16
    </properties>
17
	<dependencies>
18
		<dependency>
19
			<groupId>org.gvsig</groupId>
20
			<artifactId>org.gvsig.raster.cache.lib.api</artifactId>
21
			<version>2.0.0-SNAPSHOT</version>
22
            <scope>compile</scope>
23
		</dependency>
24
        <dependency>
25
            <groupId>org.gvsig</groupId>
26
            <artifactId>org.gvsig.raster.cache.lib.impl</artifactId>
27
            <version>2.0.0-SNAPSHOT</version>
28
            <scope>compile</scope>
29
        </dependency>
30
		<dependency>
31
			<groupId>org.gvsig</groupId>
32
			<artifactId>org.gvsig.raster.lib.api</artifactId>
33
			<version>2.0.0-SNAPSHOT</version>
34
            <scope>compile</scope>
35
		</dependency>
36
        <dependency>
37
            <groupId>org.gvsig</groupId>
38
            <artifactId>org.gvsig.raster.lib.impl</artifactId>
39
            <version>2.0.0-SNAPSHOT</version>
40
            <scope>compile</scope>
41
        </dependency>
42
        <dependency>
43
            <groupId>org.gvsig</groupId>
44
            <artifactId>org.gvsig.fmap.dal</artifactId>
45
            <scope>compile</scope>
46
        </dependency>
47
        <dependency>
48
            <groupId>org.gvsig</groupId>
49
            <artifactId>org.gvsig.fmap.dal</artifactId>
50
            <classifier>spi</classifier>
51
            <scope>compile</scope>
52
        </dependency>
53
        <dependency>
54
            <groupId>org.gvsig</groupId>
55
            <artifactId>org.gvsig.fmap.dal.file</artifactId>
56
            <scope>compile</scope>
57
        </dependency>
58
        <dependency>
59
            <groupId>org.gvsig</groupId>
60
            <artifactId>org.gvsig.fmap.dal.db</artifactId>
61
            <scope>compile</scope>
62
        </dependency>
63
        <dependency>
64
            <groupId>org.gvsig</groupId>
65
            <artifactId>org.gvsig.metadata.lib.basic.api</artifactId>
66
            <scope>compile</scope>
67
        </dependency>
68
        <dependency>
69
            <groupId>org.gvsig</groupId>
70
            <artifactId>org.gvsig.projection</artifactId>
71
            <scope>compile</scope>
72
        </dependency>
73
        <dependency>
74
            <groupId>org.gvsig</groupId>
75
            <artifactId>org.gvsig.compat</artifactId>
76
            <scope>compile</scope>
77
        </dependency>
78
        <dependency>
79
            <groupId>org.gvsig</groupId>
80
            <artifactId>org.gvsig.fmap.geometry</artifactId>
81
            <scope>compile</scope>
82
        </dependency>
83
		<dependency>
84
            <groupId>org.gvsig</groupId>
85
            <artifactId>org.gvsig.tools.lib</artifactId>
86
            <scope>compile</scope>
87
        </dependency>
88
        <dependency>
89
			<groupId>org.gvsig</groupId>
90
			<artifactId>org.gvsig.raster.gdal.io</artifactId>
91
			<version>2.0.0-SNAPSHOT</version>
92
            <scope>compile</scope>
93
		</dependency>
94
        <dependency>
95
			<groupId>org.gvsig</groupId>
96
			<artifactId>org.gvsig.jgdal</artifactId>
97
			<version>2.0.4-SNAPSHOT</version>
98
            <scope>compile</scope>
99
		</dependency>
100
        <dependency>
101
            <groupId>org.gvsig</groupId>
102
            <artifactId>org.gvsig.jgdal</artifactId>
103
            <version>2.0.4-SNAPSHOT</version>
104
            <classifier>${native-classifier}</classifier>
105
            <type>tar.gz</type>
106
            <scope>runtime</scope>
107
        </dependency>
108
	</dependencies>
109
</project>
0 110

  
org.gvsig.raster.postgis/tags/buildNumber_6/org.gvsig.raster.postgis.swing/org.gvsig.raster.postgis.swing.impl/src/main/java/org/gvsig/raster/postgis/swing/impl/DefaultPostGISRasterSwingManager.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.postgis.swing.impl;
23

  
24
import org.gvsig.raster.postgis.swing.AddLayerUI;
25
import org.gvsig.raster.postgis.swing.PostGISRasterSwingManager;
26
import org.gvsig.raster.postgis.swing.PostGISRasterWindowManager;
27
import org.gvsig.raster.postgis.swing.impl.addlayer.AddPostGISRasterLayerDialog;
28
import org.gvsig.tools.ToolsLocator;
29
import org.gvsig.tools.i18n.I18nManager;
30

  
31
/**
32
 * Default implementation of the {@link CartociudadSwingManager}.
33
 * 
34
 * @author gvSIG Team
35
 * @version $Id$
36
 */
37
public class DefaultPostGISRasterSwingManager implements PostGISRasterSwingManager {
38

  
39
    private PostGISRasterWindowManager postGISRasterWindowManager;
40
    private I18nManager i18nmanager = null;
41
   // private DataManager dataManager = null;
42

  
43
    public DefaultPostGISRasterSwingManager() {
44
        this.i18nmanager = ToolsLocator.getI18nManager();       
45
       // this.dataManager = DALLocator.getDataManager();
46
    }
47

  
48
    public String getTranslation(String key) {
49
        return this.i18nmanager.getTranslation(key);
50
    }
51

  
52
    public PostGISRasterWindowManager getWindowManager() {
53
        return postGISRasterWindowManager;
54
    }
55

  
56
    public void registerWindowManager(PostGISRasterWindowManager windowManager) {
57
        this.postGISRasterWindowManager = windowManager;        
58
    }
59

  
60
	public AddLayerUI createAddLayerUI() {
61
		return new AddPostGISRasterLayerDialog();
62
	}
63

  
64
}
0 65

  
org.gvsig.raster.postgis/tags/buildNumber_6/org.gvsig.raster.postgis.swing/org.gvsig.raster.postgis.swing.impl/src/main/java/org/gvsig/raster/postgis/swing/impl/addlayer/AddPostGISRasterLayerMainPanel.java
1
package org.gvsig.raster.postgis.swing.impl.addlayer;
2

  
3
import java.awt.GridBagConstraints;
4
import java.awt.GridBagLayout;
5

  
6
import javax.swing.JCheckBox;
7
import javax.swing.JList;
8
import javax.swing.JPanel;
9
import javax.swing.JScrollPane;
10
import javax.swing.ListSelectionModel;
11

  
12
import org.gvsig.andami.PluginServices;
13
import org.gvsig.i18n.Messages;
14

  
15
public class AddPostGISRasterLayerMainPanel extends JPanel {
16
	private static final long      serialVersionUID            = 1L;
17
	private static final int       margin                      = 4;
18
	private ConnectionChooserPanel northPanel                  = null;
19
	private JList                  list                        = null;
20
	private JList                  subdatasetList              = null;
21
	private JScrollPane            scroll                      = null;
22
	private JScrollPane            subdatasetScroll            = null;
23
	private JCheckBox              chkTileCache                = null;
24
	
25
	public AddPostGISRasterLayerMainPanel() {
26
		init();
27
	}
28
	
29
	private void init() {
30
		this.setLayout(new GridBagLayout());
31
		GridBagConstraints gridBagConstraints = new GridBagConstraints();
32
		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
33
		gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
34
		gridBagConstraints.weightx = 1;
35
		gridBagConstraints.insets = new java.awt.Insets(margin, margin, margin, margin);
36
		this.add(getNorthPanel(), gridBagConstraints);
37
		
38
		gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
39
		gridBagConstraints.weighty = 1;
40
		gridBagConstraints.gridy = 1;
41
		this.add(getScrollPanel(), gridBagConstraints);
42
		
43
		gridBagConstraints.gridy = 2;
44
		this.add(getSubdatasetScrollPanel(), gridBagConstraints);
45

  
46
		gridBagConstraints.gridy = 3;
47
		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
48
		gridBagConstraints.weighty = 0;
49
		this.add(getChkTileCache(), gridBagConstraints);
50
	}
51
	
52
	public ConnectionChooserPanel getNorthPanel() {
53
		if(northPanel == null) {
54
			northPanel = new ConnectionChooserPanel(true);
55
		}
56
		return northPanel;
57
	}
58
	
59
	public JCheckBox getChkTileCache() {
60
		if (chkTileCache == null) {
61
			chkTileCache = new JCheckBox();
62
			chkTileCache.setBounds(7, 72, 249, 20);
63
			chkTileCache.setText(PluginServices.getText(this, "tile_cache"));
64
			chkTileCache.setToolTipText(PluginServices.getText(this, "tile_cache_tooltip"));
65
			chkTileCache.setSelected(true);
66
		}
67
		return chkTileCache;
68
	}
69
	
70
	public JList getList() {
71
		if(list == null) {
72
			list = new JList();
73
			list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
74
			list.setLayoutOrientation(JList.VERTICAL);
75
			list.setVisibleRowCount(-1);
76
		}
77
		return list;
78
	}
79
	
80
	public JList getSubdatasetList() {
81
		if(subdatasetList == null) {
82
			subdatasetList = new JList();
83
			subdatasetList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
84
			subdatasetList.setLayoutOrientation(JList.VERTICAL);
85
			subdatasetList.setVisibleRowCount(-1);
86
		}
87
		return subdatasetList;
88
	}
89
	
90
	public JScrollPane getScrollPanel() {
91
		if(scroll == null) {
92
			scroll = new JScrollPane(getList());
93
			scroll.setBorder(javax.swing.BorderFactory.createTitledBorder(null, Messages.getText("tables_chooser"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
94
		}
95
		return scroll;
96
	}
97
	
98
	public JScrollPane getSubdatasetScrollPanel() {
99
		if(subdatasetScroll == null) {
100
			subdatasetScroll = new JScrollPane(getSubdatasetList());
101
			subdatasetScroll.setBorder(javax.swing.BorderFactory.createTitledBorder(null, Messages.getText("subdataset_chooser"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
102
		}
103
		return subdatasetScroll;
104
	}
105
}
0 106

  
org.gvsig.raster.postgis/tags/buildNumber_6/org.gvsig.raster.postgis.swing/org.gvsig.raster.postgis.swing.impl/src/main/java/org/gvsig/raster/postgis/swing/impl/addlayer/AddPostGISRasterLayerDialog.java
1
package org.gvsig.raster.postgis.swing.impl.addlayer;
2

  
3
import java.awt.BorderLayout;
4
import java.awt.event.ActionListener;
5
import java.util.Arrays;
6
import java.util.List;
7

  
8
import javax.swing.DefaultListModel;
9
import javax.swing.JComboBox;
10
import javax.swing.JComponent;
11
import javax.swing.JPanel;
12
import javax.swing.event.ListSelectionListener;
13

  
14
import org.gvsig.raster.postgis.swing.AddLayerUI;
15

  
16
public class AddPostGISRasterLayerDialog extends JPanel implements AddLayerUI {
17
	private static final long                   serialVersionUID   = 1L;
18
	private AddPostGISRasterLayerMainPanel      mainPanel          = null;
19
	
20
	public AddPostGISRasterLayerDialog() {
21
		init();
22
	}
23
	
24
	private void init() {
25
		setLayout(new BorderLayout());
26
		add(getMainPanel(), BorderLayout.CENTER);
27
	}
28
	
29
	public AddPostGISRasterLayerMainPanel getMainPanel() {
30
		if(mainPanel == null)
31
			mainPanel = new AddPostGISRasterLayerMainPanel();
32
		return mainPanel;
33
	}
34
	
35
	/*
36
	 * (non-Javadoc)
37
	 * @see org.gvsig.raster.postgis.swing.AddLayerUI#addActionListener(java.awt.event.ActionListener)
38
	 */
39
	public void addListenerToNewDBButton(ActionListener event) {
40
		getMainPanel().getNorthPanel().getJButton().addActionListener(event);
41
	}
42
	
43
	/*
44
	 * (non-Javadoc)
45
	 * @see org.gvsig.raster.postgis.swing.AddLayerUI#addListenerToBDSelectionCombo(java.awt.event.ActionListener)
46
	 */
47
	public void addListenerToBDSelectionCombo(ActionListener listener) {
48
		getMainPanel().getNorthPanel().getComboBox().addActionListener(listener);
49
	}
50
	
51
	/*
52
	 * (non-Javadoc)
53
	 * @see org.gvsig.raster.postgis.swing.AddLayerUI#addListenerToTableSelector(java.awt.event.ActionListener)
54
	 */
55
	public void addListenerToTableSelector(ListSelectionListener listener) {
56
		getMainPanel().getList().addListSelectionListener(listener);
57
	}
58
	
59
	/*
60
	 * (non-Javadoc)
61
	 * @see org.gvsig.raster.postgis.swing.AddLayerUI#isAddTableEvent(java.lang.Object)
62
	 */
63
	public boolean isAddTableEvent(Object obj) {
64
		return (obj == getMainPanel().getList());
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff