Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / 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 @ 44831

History | View | Annotate | Download (5.68 KB)

1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2016 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.fmap.dal.file.imageio;
24

    
25
import java.awt.image.BufferedImage;
26
import java.io.File;
27
import java.io.IOException;
28
import javax.imageio.ImageIO;
29

    
30
import org.apache.commons.io.FilenameUtils;
31

    
32
import org.gvsig.fmap.dal.DataServerExplorer;
33
import org.gvsig.fmap.dal.NewDataStoreParameters;
34
import org.gvsig.fmap.dal.exception.CreateException;
35
import org.gvsig.fmap.dal.exception.DataException;
36
import org.gvsig.fmap.dal.raster.NewRasterStoreParameters;
37
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
38
import org.gvsig.fmap.dal.serverexplorer.filesystem.impl.AbstractFilesystemServerExplorerProvider;
39
import org.gvsig.fmap.dal.serverexplorer.filesystem.spi.FilesystemServerExplorerProviderFactory;
40
import org.gvsig.fmap.dal.serverexplorer.filesystem.spi.FilesystemServerExplorerProviderServices;
41
import org.gvsig.raster.lib.buffer.api.Buffer;
42

    
43
public class ImageIOFileSystemServerProvider extends AbstractFilesystemServerExplorerProvider {
44

    
45
    protected FilesystemServerExplorerProviderServices serverExplorer;
46

    
47
    protected String[] fileExtensions;
48
    protected boolean canCreate;
49

    
50
    public ImageIOFileSystemServerProvider(
51
            FilesystemServerExplorerProviderFactory factory,
52
            String name, 
53
            String description, 
54
            String[] fileExtensions
55
        ) {
56
        this(factory, name, description, fileExtensions, false);
57
    }
58
    
59
    public ImageIOFileSystemServerProvider(
60
            FilesystemServerExplorerProviderFactory factory,
61
            String name, 
62
            String description, 
63
            String[] fileExtensions,
64
            boolean canCreate
65
        ) {
66
        super(factory, name, description);
67
        this.fileExtensions = fileExtensions;
68
        this.canCreate = canCreate;
69
    }
70
    
71
    @Override
72
    public boolean canCreate() {
73
        return canCreate;
74
    }
75

    
76
    @Override
77
    public NewDataStoreParameters getCreateParameters() throws DataException {
78
        if( !this.canCreate() ) {
79
           throw new UnsupportedOperationException();
80
        }
81
        return null ; // TODO: Falta la creacion de los parametros 
82
    }
83

    
84
    @Override
85
    public void create(NewDataStoreParameters parameters, boolean overwrite) throws CreateException {
86
        if( !this.canCreate() ) {
87
           throw new UnsupportedOperationException();
88
        }
89
        File output = ((FilesystemStoreParameters)parameters).getFile();
90
        if( output==null ) {
91
            throw new IllegalArgumentException("Parameter 'file' can't be null.");
92
        }
93
        Buffer buffer = ((NewRasterStoreParameters)parameters).getBuffer();
94
        if( buffer==null ) {
95
            throw new IllegalArgumentException("Parameter 'buffer' can't be null.");
96
        }
97
        BufferedImage image = buffer.getBufferedImage();
98
        try {
99
            ImageIO.write(image, this.getName(), output);
100
        } catch (IOException ex) {
101
            throw new CreateException(output.getAbsolutePath(), ex);
102
        }
103
        
104
//        DataTypesManager dtm = ToolsLocator.getDataTypesManager();
105
//        ImageWriter writer = getImageWriter();
106
//        ImageWriteParam writerParams = writer.getDefaultWriteParam();
107
//        Class<? extends ImageWriteParam> writerParamsClass = writerParams.getClass();
108
//        for( DynField field : parameters.getDynClass().getDynFields() ) {
109
//            DynField_v2 field2 = (DynField_v2) field;
110
//            try {
111
//                String methodName = (String) field2.getTags().get(
112
//                    "ImageWriteParam", 
113
//                    DataTypes.STRING
114
//                );
115
//                if( methodName!=null ) {
116
//                    Method setter = writerParamsClass.getMethod(
117
//                        methodName, 
118
//                        dtm.getDefaultClass(field.getType())
119
//                    );
120
//                    setter.invoke(
121
//                        writerParams, 
122
//                        parameters.getDynValue(field.getName())
123
//                    );
124
//                }
125
//            } catch (Exception ex) {
126
//            }
127
//        }
128
//        FileOutputStream fos = null;
129
//        try {
130
//            fos = new FileOutputStream(output);
131
//            writer.setOutput(fos);
132
//            writer.write(null, new IIOImage(image, null, null), writerParams);
133
//        } catch (Exception ex) {
134
//            throw new CreateException(output.getAbsolutePath(), ex);
135
//        } finally {
136
//            IOUtils.closeQuietly(fos);
137
//        }
138
        
139
    }
140
    
141
//    private ImageWriter getImageWriter() {
142
//        return null;
143
//    }
144
    
145
    @Override
146
    public int getMode() {
147
        return DataServerExplorer.MODE_RASTER;
148
    }
149

    
150
    @Override
151
    public boolean accept(File pathname) {
152
        return FilenameUtils.isExtension(pathname.getName().toLowerCase(), this.fileExtensions);
153
    }
154
    
155
}