Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.exportto / org.gvsig.exportto.lib / org.gvsig.exportto.lib.impl / src / main / java / org / gvsig / export / impl / service / DefaultExportServiceManager.java @ 43936

History | View | Annotate | Download (4.4 KB)

1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.export.impl.service;
7

    
8
import java.util.ArrayList;
9
import java.util.Collections;
10
import java.util.HashMap;
11
import java.util.List;
12
import java.util.Map;
13
import org.cresques.cts.ICoordTrans;
14
import org.gvsig.export.ExportParameters;
15
import org.gvsig.export.ExportParametersGeometry;
16
import org.gvsig.export.Filter;
17
import org.gvsig.export.impl.ExportGeometryUtils;
18
import org.gvsig.export.spi.AttributeNamesTranslator;
19
import org.gvsig.export.spi.ExportGeometryHelper;
20
import org.gvsig.export.spi.ExportService;
21
import org.gvsig.export.spi.ExportServiceFactory;
22
import org.gvsig.export.spi.ExportServiceManager;
23
import org.gvsig.fmap.dal.feature.FeatureType;
24
import org.gvsig.fmap.geom.Geometry;
25
import org.slf4j.Logger;
26
import org.slf4j.LoggerFactory;
27

    
28
/**
29
 *
30
 * @author jjdelcerro
31
 */
32
public class DefaultExportServiceManager implements ExportServiceManager {
33

    
34
    private static final Logger LOG = LoggerFactory.getLogger(DefaultExportServiceManager.class);
35
    
36
    private final Map<String,ExportServiceFactory> factories;
37

    
38
    public DefaultExportServiceManager() {
39
        super();
40
        this.factories = new HashMap<>();
41
    }
42

    
43
    @Override
44
    public AttributeNamesTranslator createAttributeNamesTranslator(FeatureType type, int maxNameLen) {
45
        return new DefaultAttributeNamesTranslator(type, maxNameLen);
46
    }
47

    
48
    @Override
49
    public AttributeNamesTranslator createAttributeNamesTranslator() {
50
        return new AttributeNamesTranslator() {
51
                @Override
52
                public String getTargetName(String name) {
53
                    return name;
54
                }
55

    
56
                @Override
57
                public String getSourceName(String name) {
58
                    return name;
59
                }
60

    
61
                @Override
62
                public boolean hasTranslations() {
63
                    return false;
64
                }
65

    
66
                @Override
67
                public boolean hasTranslation(String name) {
68
                    return false;
69
                }
70
            };
71
    }
72

    
73
    @Override
74
    public ExportServiceFactory getServiceFactory(String name) {
75
        ExportServiceFactory factory = this.factories.get(name);
76
        if( factory == null ) {
77
            throw new IllegalArgumentException("Don't exists export factory '"+name+"'.");
78
        }
79
        return factory;
80
    }
81
    
82
    @Override
83
    public ExportService createService(ExportParameters parameters) {
84
        return this.getServiceFactory(parameters.getServiceName()).createService(parameters);
85
    }
86

    
87
    @Override
88
    public ExportParameters createServiceParameters(String name) {
89
        return this.getServiceFactory(name).createParameters();
90
    }
91

    
92
    @Override
93
    public void register(ExportServiceFactory factory) {
94
        this.factories.put(factory.getName(), factory);
95
    }
96

    
97
    @Override
98
    public List<ExportServiceFactory> getAllServiceFactories() {
99
        List<ExportServiceFactory> result = new ArrayList<>();
100
        result.addAll(this.factories.values());
101
        return Collections.unmodifiableList(result);
102
    }
103
    
104
    @Override
105
    public List<ExportServiceFactory> getServiceFactories(Filter<ExportServiceFactory> filter) {
106
        List<ExportServiceFactory> result = new ArrayList<>();
107
        if( filter == null ) {
108
            result.addAll(this.factories.values());
109
        } else {
110
            for (ExportServiceFactory factory : this.factories.values()) {
111
                if( factory.isEnabled() && filter.apply(factory) ) {
112
                    result.add(factory);
113
                }
114
            }
115
        }
116
        return Collections.unmodifiableList(result);
117
    }
118

    
119
    @Override
120
    public FixGeometryStatus fixGeometry(
121
            ExportParametersGeometry parmeters,
122
            ICoordTrans coord_trans,
123
            Geometry geometry
124
    ) {
125
        return ExportGeometryUtils.fixGeometry(parmeters, coord_trans, geometry);
126
    }    
127

    
128
    @Override
129
    public ExportGeometryHelper createGeometryHelper(ExportParametersGeometry parameters, FeatureType theTargetFeatureType, FeatureType theSourceFeatureType) {
130
        DefaultExportGeometryHelper helper = new DefaultExportGeometryHelper(
131
                parameters,
132
                theTargetFeatureType, 
133
                theSourceFeatureType
134
        );
135
        return helper;
136
        
137
    }
138
}