Revision 43867 branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.imageio/src/main/java/org/gvsig/fmap/dal/file/imageio/ImageIOFileSystemServerProvider.java
ImageIOFileSystemServerProvider.java | ||
---|---|---|
22 | 22 |
*/ |
23 | 23 |
package org.gvsig.fmap.dal.file.imageio; |
24 | 24 |
|
25 |
import java.awt.image.BufferedImage; |
|
25 | 26 |
import java.io.File; |
27 |
import java.io.FileOutputStream; |
|
28 |
import java.io.IOException; |
|
29 |
import java.lang.reflect.InvocationTargetException; |
|
30 |
import java.lang.reflect.Method; |
|
31 |
import java.util.logging.Level; |
|
32 |
import java.util.logging.Logger; |
|
33 |
import javax.imageio.IIOImage; |
|
34 |
import javax.imageio.ImageIO; |
|
35 |
import javax.imageio.ImageWriteParam; |
|
36 |
import javax.imageio.ImageWriter; |
|
26 | 37 |
|
27 | 38 |
import org.apache.commons.io.FilenameUtils; |
39 |
import org.apache.commons.io.IOUtils; |
|
28 | 40 |
|
29 | 41 |
import org.gvsig.fmap.dal.DataServerExplorer; |
42 |
import org.gvsig.fmap.dal.NewDataStoreParameters; |
|
43 |
import org.gvsig.fmap.dal.exception.CreateException; |
|
44 |
import org.gvsig.fmap.dal.exception.DataException; |
|
45 |
import org.gvsig.fmap.dal.raster.api.NewRasterStoreParameters; |
|
46 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters; |
|
30 | 47 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.impl.AbstractFilesystemServerExplorerProvider; |
31 | 48 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.spi.FilesystemServerExplorerProviderServices; |
49 |
import org.gvsig.raster.lib.buffer.api.Buffer; |
|
50 |
import org.gvsig.tools.ToolsLocator; |
|
51 |
import org.gvsig.tools.dataTypes.CoercionException; |
|
52 |
import org.gvsig.tools.dataTypes.DataTypes; |
|
53 |
import org.gvsig.tools.dataTypes.DataTypesManager; |
|
54 |
import org.gvsig.tools.dynobject.DynField; |
|
55 |
import org.gvsig.tools.dynobject.DynField_v2; |
|
32 | 56 |
|
33 | 57 |
public class ImageIOFileSystemServerProvider extends AbstractFilesystemServerExplorerProvider { |
34 | 58 |
|
35 | 59 |
protected FilesystemServerExplorerProviderServices serverExplorer; |
36 | 60 |
|
37 | 61 |
protected String[] fileExtensions; |
62 |
protected boolean canCreate; |
|
38 | 63 |
|
39 | 64 |
public ImageIOFileSystemServerProvider( |
40 | 65 |
String name, |
41 | 66 |
String description, |
42 | 67 |
String[] fileExtensions |
43 | 68 |
) { |
69 |
this(name, description, fileExtensions, false); |
|
70 |
} |
|
71 |
|
|
72 |
public ImageIOFileSystemServerProvider( |
|
73 |
String name, |
|
74 |
String description, |
|
75 |
String[] fileExtensions, |
|
76 |
boolean canCreate |
|
77 |
) { |
|
44 | 78 |
super(name, description); |
45 | 79 |
this.fileExtensions = fileExtensions; |
80 |
this.canCreate = canCreate; |
|
46 | 81 |
} |
47 | 82 |
|
48 | 83 |
@Override |
84 |
public boolean canCreate() { |
|
85 |
return canCreate; |
|
86 |
} |
|
87 |
|
|
88 |
@Override |
|
89 |
public NewDataStoreParameters getCreateParameters() throws DataException { |
|
90 |
if( !this.canCreate() ) { |
|
91 |
throw new UnsupportedOperationException(); |
|
92 |
} |
|
93 |
return null ; // TODO: Falta la creacion de los parametros |
|
94 |
} |
|
95 |
|
|
96 |
@Override |
|
97 |
public void create(NewDataStoreParameters parameters, boolean overwrite) throws CreateException { |
|
98 |
if( !this.canCreate() ) { |
|
99 |
throw new UnsupportedOperationException(); |
|
100 |
} |
|
101 |
File output = ((FilesystemStoreParameters)parameters).getFile(); |
|
102 |
if( output==null ) { |
|
103 |
throw new IllegalArgumentException("Parameter 'file' can't be null."); |
|
104 |
} |
|
105 |
Buffer buffer = ((NewRasterStoreParameters)parameters).getBuffer(); |
|
106 |
if( buffer==null ) { |
|
107 |
throw new IllegalArgumentException("Parameter 'buffer' can't be null."); |
|
108 |
} |
|
109 |
BufferedImage image = buffer.getBufferedImage(); |
|
110 |
try { |
|
111 |
ImageIO.write(image, this.getName(), output); |
|
112 |
} catch (IOException ex) { |
|
113 |
throw new CreateException(output.getAbsolutePath(), ex); |
|
114 |
} |
|
115 |
|
|
116 |
// DataTypesManager dtm = ToolsLocator.getDataTypesManager(); |
|
117 |
// ImageWriter writer = getImageWriter(); |
|
118 |
// ImageWriteParam writerParams = writer.getDefaultWriteParam(); |
|
119 |
// Class<? extends ImageWriteParam> writerParamsClass = writerParams.getClass(); |
|
120 |
// for( DynField field : parameters.getDynClass().getDynFields() ) { |
|
121 |
// DynField_v2 field2 = (DynField_v2) field; |
|
122 |
// try { |
|
123 |
// String methodName = (String) field2.getTags().get( |
|
124 |
// "ImageWriteParam", |
|
125 |
// DataTypes.STRING |
|
126 |
// ); |
|
127 |
// if( methodName!=null ) { |
|
128 |
// Method setter = writerParamsClass.getMethod( |
|
129 |
// methodName, |
|
130 |
// dtm.getDefaultClass(field.getType()) |
|
131 |
// ); |
|
132 |
// setter.invoke( |
|
133 |
// writerParams, |
|
134 |
// parameters.getDynValue(field.getName()) |
|
135 |
// ); |
|
136 |
// } |
|
137 |
// } catch (Exception ex) { |
|
138 |
// } |
|
139 |
// } |
|
140 |
// FileOutputStream fos = null; |
|
141 |
// try { |
|
142 |
// fos = new FileOutputStream(output); |
|
143 |
// writer.setOutput(fos); |
|
144 |
// writer.write(null, new IIOImage(image, null, null), writerParams); |
|
145 |
// } catch (Exception ex) { |
|
146 |
// throw new CreateException(output.getAbsolutePath(), ex); |
|
147 |
// } finally { |
|
148 |
// IOUtils.closeQuietly(fos); |
|
149 |
// } |
|
150 |
|
|
151 |
} |
|
152 |
|
|
153 |
// private ImageWriter getImageWriter() { |
|
154 |
// return null; |
|
155 |
// } |
|
156 |
|
|
157 |
@Override |
|
49 | 158 |
public int getMode() { |
50 | 159 |
return DataServerExplorer.MODE_RASTER; |
51 | 160 |
} |
Also available in: Unified diff