Statistics
| Revision:

gvsig-projects-pool / org.gvsig.busquedacatastral / trunk / org.gvsig.busquedacatastral / org.gvsig.busquedacatastral.lib / org.gvsig.busquedacatastral.lib.impl / src / main / java / org / gvsig / busquedacatastral / lib / impl / WSObjectsFactory.java @ 140

History | View | Annotate | Download (6.33 KB)

1
package org.gvsig.busquedacatastral.lib.impl;
2

    
3
import java.io.File;
4
import java.util.List;
5

    
6
import javax.xml.rpc.ServiceException;
7

    
8
import org.apache.commons.lang3.StringUtils;
9
import org.gvsig.busquedacatastral.lib.api.BusquedaCatastralManager;
10
import org.gvsig.busquedacatastral.lib.api.exceptions.BusquedaCatastralGettingParamsException;
11
import org.gvsig.busquedacatastral.lib.impl.ws.CallejeroCatastroWSLocator;
12
import org.gvsig.busquedacatastral.lib.impl.ws.CallejeroCatastroWSSoap;
13
import org.gvsig.busquedacatastral.lib.impl.ws.classes.cxf.Err;
14
import org.gvsig.fmap.dal.DALLocator;
15
import org.gvsig.fmap.dal.DataManager;
16
import org.gvsig.fmap.dal.DataServerExplorerParameters;
17
import org.gvsig.fmap.dal.DataStoreParameters;
18
import org.gvsig.fmap.dal.exception.DataException;
19
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
20
import org.gvsig.fmap.dal.feature.EditableFeatureType;
21
import org.gvsig.fmap.dal.feature.FeatureQuery;
22
import org.gvsig.fmap.dal.feature.FeatureSet;
23
import org.gvsig.fmap.dal.feature.FeatureStore;
24
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
25
import org.gvsig.fmap.dal.feature.paging.FeaturePagingHelper;
26
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
27
import org.gvsig.tools.ToolsLocator;
28
import org.gvsig.tools.dynobject.DynObject;
29
import org.gvsig.tools.exception.BaseException;
30
import org.gvsig.tools.i18n.I18nManager;
31
import org.gvsig.tools.locator.LocatorException;
32
import org.slf4j.Logger;
33
import org.slf4j.LoggerFactory;
34

    
35

    
36
/**
37
 * Used for classes wich need data from the webservice.
38
 * Offers methods to manage webservice and cache files
39
 * @author dmartinezizquierdo
40
 *
41
 */
42
public  abstract class WSObjectsFactory {
43

    
44
    private static final Logger logger = LoggerFactory
45
        .getLogger(WSObjectsFactory.class);
46

    
47
    private final static String DBF_PROVIDER_NAME="DBF";
48

    
49
    protected BusquedaCatastralManager manager;
50

    
51
    protected WSObjectsFactory(BusquedaCatastralManager manager){
52
        this.manager=manager;
53
    }
54

    
55

    
56
    protected CallejeroCatastroWSSoap getCatastroWS() throws BusquedaCatastralGettingParamsException{
57
        try {
58
            CallejeroCatastroWSLocator locator=
59
                new CallejeroCatastroWSLocator();
60
            CallejeroCatastroWSSoap callejeroWS =
61
                locator.getCallejeroCatastroSoap();
62
            return callejeroWS;
63
        } catch (ServiceException e) {
64
            logger.error("Error obtaining webservice",e);
65
            I18nManager i18nManager = ToolsLocator.getI18nManager();
66
            throw new BusquedaCatastralGettingParamsException(i18nManager.getTranslation("_error_obtaining_catastro_webservice"), e);
67
        }
68

    
69
    }
70

    
71
    protected void createDBF(File file)
72
        throws BusquedaCatastralGettingParamsException{
73
        try {
74
            if (!file.exists()) {
75
                File folder=file.getParentFile();
76
                if (!folder.exists()){
77
                    folder.mkdirs();
78
                }
79
            }
80

    
81
            DataManager datamanager = DALLocator.getDataManager();
82
            DataServerExplorerParameters explorerParameters =
83
                (DataServerExplorerParameters) datamanager
84
                    .createServerExplorerParameters(FilesystemServerExplorer.NAME);
85
            FilesystemServerExplorer explorer =
86
                (FilesystemServerExplorer) datamanager.openServerExplorer(
87
                    FilesystemServerExplorer.NAME, explorerParameters
88
                    );
89

    
90
            NewFeatureStoreParameters addParams = (NewFeatureStoreParameters) explorer.getAddParameters(DBF_PROVIDER_NAME);
91
            addParams.setDynValue("DbfFile",file);
92
            EditableFeatureType type = addParams.getDefaultFeatureType();
93
            defineType(type);
94
            explorer.add(DBF_PROVIDER_NAME, addParams, true);
95

    
96
            DataStoreParameters parameters = datamanager.createStoreParameters(DBF_PROVIDER_NAME);
97
            parameters.setDynValue("DbfFile", file);
98
            FeatureStore dbfStore =
99
                (FeatureStore) datamanager.openStore(DBF_PROVIDER_NAME, parameters);
100
            dbfStore.edit(FeatureStore.MODE_APPEND);
101
            writeFileData(dbfStore);
102

    
103
            dbfStore.finishEditing();
104
            dbfStore.dispose();
105
        } catch (ValidateDataParametersException | LocatorException
106
            | DataException  e) {
107
            logger.error("Error getting feature store");
108
            I18nManager i18nManager = ToolsLocator.getI18nManager();
109
            throw new BusquedaCatastralGettingParamsException(i18nManager.getTranslation("_error_getting_feature_store"),e);
110
        }
111
    }
112

    
113

    
114
    protected List<DynObject> getListFromDBF(File file) throws BaseException {
115
        DataManager datamanager = DALLocator.getDataManager();
116
        DataStoreParameters parameters = datamanager.createStoreParameters(DBF_PROVIDER_NAME);
117
        parameters.setDynValue("DbfFile", file);
118

    
119
        FeatureStore dbf = (FeatureStore) datamanager.openStore(DBF_PROVIDER_NAME, parameters);
120

    
121
        String expressionQuery=getExpressionQuery();
122

    
123
        FeaturePagingHelper pager;
124
        if(StringUtils.isEmpty(expressionQuery)){
125
            pager = datamanager.createFeaturePagingHelper(dbf, 500);
126
        }else{
127
            FeatureQuery featureQuery = dbf.createFeatureQuery();
128
            featureQuery.setFilter( datamanager.createExpresion(expressionQuery) );
129
            pager = datamanager.createFeaturePagingHelper(dbf,featureQuery, 500);
130
        }
131
        return pager.asListOfDynObjects();
132
    }
133

    
134
    protected void webserviceErrors(List<Err>errores) throws BusquedaCatastralGettingParamsException{
135
        if (errores!=null && !errores.isEmpty()){
136
            StringBuilder descErrores=new StringBuilder();
137
            I18nManager i18nManager = ToolsLocator.getI18nManager();
138
            descErrores.append(i18nManager.getTranslation("_errors_found_by_ws")+":");
139
            for (Err error:errores){
140
                descErrores.append("\n"+error.getDes());
141
                logger.error(descErrores.toString());
142
                throw new BusquedaCatastralGettingParamsException(descErrores.toString(), null);
143
            }
144
        }
145
    }
146

    
147
    abstract protected void defineType(EditableFeatureType type) throws BusquedaCatastralGettingParamsException;
148

    
149
    abstract protected void writeFileData(FeatureStore featureStore) throws BusquedaCatastralGettingParamsException, DataException;
150

    
151
    abstract protected String getExpressionQuery();
152
}