Project

General

Profile

« Previous | Next » 

Revision cd79d676

Added by Andreas Müller about 5 years ago

ref #1444 ref #7976 some changes to ERMS import

View differences:

cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/erms/ErmsVernacularImport.java
26 26
import eu.etaxonomy.cdm.io.common.mapping.DbImportMapping;
27 27
import eu.etaxonomy.cdm.io.common.mapping.DbImportObjectMapper;
28 28
import eu.etaxonomy.cdm.io.common.mapping.DbImportStringMapper;
29
import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;
29 30
import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException;
30 31
import eu.etaxonomy.cdm.io.pesi.erms.validation.ErmsVernacularImportValidator;
31 32
import eu.etaxonomy.cdm.model.common.AnnotationType;
......
59 60
	@Override
60 61
	protected String getRecordQuery(ErmsImportConfigurator config) {
61 62
		String strRecordQuery =
62
			" SELECT vernaculars.*, tu.tu_acctaxon, tu.id  " +
63
			" FROM vernaculars INNER JOIN tu ON vernaculars.tu_id = tu.id  " +
64
			" WHERE ( vernaculars.id IN (" + ID_LIST_TOKEN + ") )";
63
			" SELECT v.*, tu.tu_acctaxon, tu.id, l.*  " +
64
			" FROM vernaculars v INNER JOIN tu ON v.tu_id = tu.id "
65
			+ "   LEFT OUTER JOIN languages l ON l.LanID = v.lan_id " +
66
			" WHERE ( v.id IN (" + ID_LIST_TOKEN + ") )";
65 67
		return strRecordQuery;
66 68
	}
67 69

  
......
91 93
		Set<String> idSet;
92 94
		Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<>();
93 95

  
96
		Map<String, Language> languageMap = new HashMap<>();
94 97
		try{
95 98
			Set<String> taxonIdSet = new HashSet<>();
96
			Set<String> languageIdSet = new HashSet<>();
99
//			Set<String> languageIdSet = new HashSet<>();
97 100
			while (rs.next()){
98 101
				handleForeignKey(rs, taxonIdSet, "tu_id");
99
				handleForeignKey(rs, languageIdSet, "lan_id");
102
				addLanguage(rs, languageMap, state);
100 103
			}
101 104

  
102 105
			//taxon map
......
109 112

  
110 113
			//language map
111 114
			nameSpace = LANGUAGE_NAMESPACE;
112
			Map<String, Language> languageMap = new HashMap<>();
113
			ErmsTransformer transformer = new ErmsTransformer();
114
			for (String lanAbbrev: languageIdSet){
115
				Language language = null;
116
				try {
117
					language = transformer.getLanguageByKey(lanAbbrev);
118
					if (language == null || language.equals(Language.UNDETERMINED())){
119
						UUID uuidLang = transformer.getLanguageUuid(lanAbbrev);
120
						if (uuidLang != null){
121
							language = getLanguage(state, uuidLang, lanAbbrev, lanAbbrev, lanAbbrev);
122

  
123
						}
124
						if (language == null || language.equals(Language.UNDETERMINED() )){
125
							logger.warn("Langauge undefined: " + lanAbbrev);
126
						}
127
					}
128

  
129
				} catch (IllegalArgumentException e) {
130
					e.printStackTrace();
131
				} catch (UndefinedTransformerMethodException e) {
132
					e.printStackTrace();
133
				}
134
				languageMap.put(lanAbbrev, language);
135
			}
136 115
			result.put(nameSpace, languageMap);
137 116

  
138 117
		} catch (SQLException e) {
......
141 120
		return result;
142 121
	}
143 122

  
144
	@Override
123
	/**
124
     * @param rs
125
     * @param languageMap
126
	 * @param state
127
	 * @throws SQLException
128
     */
129
    private void addLanguage(ResultSet rs, Map<String, Language> languageMap, ErmsImportState state) throws SQLException {
130
        IInputTransformer transformer = state.getTransformer();
131
        String id639_1 = rs.getString("639_1");
132
        String id639_2 = rs.getString("639_2");
133
        String id639_3 = rs.getString("639_3");
134
        String lanId = rs.getString("LanID");
135
        if (id639_1 != null && Language.getLanguageByIsoCode(id639_1)!= null){
136
            languageMap.put(lanId, Language.getLanguageByIsoCode(id639_1));
137
        }else if (id639_2 != null && Language.getLanguageByIsoCode(id639_2)!= null){
138
            languageMap.put(lanId, Language.getLanguageByIsoCode(id639_2));
139
        }else{
140
            Language language = null;
141
            try {
142
                language = transformer.getLanguageByKey(lanId);
143
                if (language == null || language.equals(Language.UNDETERMINED())){
144
                    UUID uuidLang = transformer.getLanguageUuid(lanId);
145
                    if (uuidLang != null){
146
                        language = getLanguage(state, uuidLang, rs.getString("LanName"), "LanName", "639_3");
147
                    }
148
                    if (language == null || language.equals(Language.UNDETERMINED() )){
149
                        logger.warn("Langauge undefined: " + lanId);
150
                    }
151
                }
152

  
153
            } catch (IllegalArgumentException e) {
154
                e.printStackTrace();
155
            } catch (UndefinedTransformerMethodException e) {
156
                e.printStackTrace();
157
            }
158
        }
159
    }
160

  
161
    @Override
145 162
	protected boolean doCheck(ErmsImportState state){
146 163
		IOValidator<ErmsImportState> validator = new ErmsVernacularImportValidator();
147 164
		return validator.validate(state);

Also available in: Unified diff