Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.exportto / org.gvsig.exportto.swing / org.gvsig.exportto.swing.prov / org.gvsig.exportto.swing.prov.jdbc / src / main / java / org / gvsig / export / jdbc / service / ExportJDBCAttributeNamesTranslator.java @ 44860

History | View | Annotate | Download (4.26 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.jdbc.service;
7

    
8
import org.apache.commons.lang3.StringUtils;
9
import org.gvsig.tools.ToolsLocator;
10
import org.gvsig.tools.dynobject.DynStruct;
11
import org.gvsig.tools.namestranslator.BaseNamesTranslator;
12
import org.gvsig.tools.namestranslator.NamesTranslator;
13
import org.gvsig.tools.persistence.PersistenceManager;
14
import org.gvsig.tools.persistence.PersistentState;
15
import org.gvsig.tools.persistence.exception.PersistenceException;
16

    
17
/**
18
 *
19
 * @author osc
20
 */
21
public class ExportJDBCAttributeNamesTranslator extends BaseNamesTranslator {
22

    
23
    private ExportJDBCParameters parameters;
24

    
25
    public ExportJDBCAttributeNamesTranslator(ExportJDBCParameters parameters) {
26
        this.parameters = parameters;
27
    }
28

    
29
    public ExportJDBCAttributeNamesTranslator() {
30

    
31
    }
32

    
33
    public void setParameters(ExportJDBCParameters parameters) {
34
        this.parameters = parameters;
35
    }
36

    
37
    public static void registerPersistence() {
38
        PersistenceManager manager = ToolsLocator.getPersistenceManager();
39
        if (manager.getDefinition("ExportJDBCAttributeNamesTranslator") == null) {
40
            DynStruct definition = manager.addDefinition(ExportJDBCAttributeNamesTranslator.class,
41
                    "ExportJDBCAttributeNamesTranslator", "ExportJDBCAttributeNamesTranslator persistence definition", null, null);
42
            definition.extend(manager.getDefinition("BaseNamesTranslator"));
43
        }
44
    }
45

    
46
    @Override
47
    public void saveToState(PersistentState state) throws PersistenceException {
48
        super.saveToState(state);
49
    }
50

    
51
    @Override
52
    public void loadFromState(PersistentState state) throws PersistenceException {
53
        super.loadFromState(state);
54
    }
55

    
56
    @Override
57
    public NamesTranslator clone() throws CloneNotSupportedException {
58
        ExportJDBCAttributeNamesTranslator clone = (ExportJDBCAttributeNamesTranslator) super.clone();
59
        return clone;
60
    }
61

    
62
    protected String fixSyntax(String name) {
63
        String target_name = name;
64
        if (StringUtils.isBlank(target_name)) {
65
            target_name = DEFAULT_FIELD_NAME;
66
        }
67
        if (this.parameters.getRemoveSpacesInIdentifiers()) {
68
            //target_name = target_name.replaceAll("\\s","");
69
            target_name = StringUtils.normalizeSpace(target_name).replace(" ", "_");
70
        }
71
        if (this.parameters.getTranslateHyphens()) {
72
            target_name = target_name.replace("-", "_");
73
        }
74
        if (this.parameters.getTranslateIdentifiersToLowerCase()) {
75
            target_name = target_name.toLowerCase();
76
        }
77
        return target_name;
78
    }
79

    
80
    @Override
81
    public String getSuggestion(String name) {
82

    
83
        String target_name = fixSyntax(name);
84

    
85
        if (isValid(target_name)) {
86
            return target_name;
87
        }
88
        
89

    
90
        for (int i = 0; i < 255; i++) {
91
            String new_target_name = target_name + i;
92
            if (isValid(new_target_name)) {
93
                return new_target_name;
94
            }
95
        }
96

    
97
        return target_name.substring(0, 5) + (System.currentTimeMillis() % 1000000);
98

    
99
    }
100

    
101
    @Override
102
    public boolean isValid(String name) {
103
        if (!super.isValid(name)) {
104
            return false;
105
        }
106
        if (name.isEmpty()) {
107
            name = DEFAULT_FIELD_NAME;
108
        }
109
        if (this.parameters.getRemoveSpacesInIdentifiers()) {
110
            //if (newName.replaceAll("\\s","") != newName) {
111
            String s = StringUtils.normalizeSpace(name).replace(" ", "_");
112
            if (!name.equals(s)) {
113
                return false;
114
            }
115
        }
116
        if (this.parameters.getTranslateHyphens()) {
117
            if (name.contains("-")) {
118
                return false;
119
            }
120
        }
121
        if (this.parameters.getTranslateIdentifiersToLowerCase()) {
122
            if (!StringUtils.equals(name.toLowerCase(), name)) {
123
                return false;
124
            }
125
        }
126
        return true;
127
    }
128

    
129
    @Override
130
    public int setTranslation(String sourceName, String translatedName) {
131
        String target_name = fixSyntax(translatedName);
132
        return super.setTranslation(sourceName, target_name);
133
    }
134

    
135
}