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

View differences:

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