Project

General

Profile

Download (2.48 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.cdm.io.common.mapping.out;
11

    
12
import java.sql.Types;
13

    
14
import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;
15

    
16
import eu.etaxonomy.cdm.common.URI;
17
import eu.etaxonomy.cdm.io.common.DbExportStateBase;
18
import eu.etaxonomy.cdm.model.common.CdmBase;
19

    
20
/**
21
 * @author a.mueller
22
 * @since 12.05.2009
23
 */
24
public class DbUriMapper
25
            extends DbSingleAttributeExportMapperBase<DbExportStateBase<?, IExportTransformer>> {
26

    
27
    private static final Logger logger = LogManager.getLogger(DbUriMapper.class);
28

    
29
	private static final int MAX_PRECISION = -1;  //precision for datatype nvarchar(max) == clob (SQL Server 2008)
30

    
31
	public static DbUriMapper NewInstance(String cdmAttributeString, String dbAttributeString){
32
		return new DbUriMapper(cdmAttributeString, dbAttributeString, null, true);
33
	}
34

    
35
	public static DbUriMapper NewFacultativeInstance(String cdmAttributeString, String dbAttributeString){
36
		return new DbUriMapper(cdmAttributeString, dbAttributeString, null, false);
37
	}
38

    
39
	public static DbUriMapper NewInstance(String cdmAttributeString, String dbAttributeString, String defaultValue){
40
		return new DbUriMapper(cdmAttributeString, dbAttributeString, defaultValue, false);
41
	}
42

    
43
	public static DbUriMapper NewInstance(String cdmAttributeString, String dbAttributeString, String defaultValue, boolean obligatory){
44
		return new DbUriMapper(cdmAttributeString, dbAttributeString, defaultValue, obligatory);
45
	}
46

    
47
	private DbUriMapper(String cdmAttributeString, String dbAttributeString, String defaultValue, boolean obligatory) {
48
		super(cdmAttributeString, dbAttributeString, defaultValue, obligatory, false);
49
	}
50

    
51
	@Override
52
	protected Object getValue(CdmBase cdmBase) {
53
		URI uri = (URI)super.getValue(cdmBase);
54
		String result = (uri == null ? null : uri.toString());
55
		if (result !=null && result.length() > getPrecision() && getPrecision() != MAX_PRECISION){
56
			logger.warn("Truncation (" + result.length() + "->" + getPrecision() + ") needed for Attribute " + getDestinationAttribute() + " in " +  cdmBase + "." );
57
			result = result.substring(0, getPrecision());
58
		}
59
		return result;
60
	}
61

    
62
	@Override
63
	protected int getSqlType() {
64
		return Types.VARCHAR;
65
	}
66

    
67
	@Override
68
	public Class<?> getTypeClass() {
69
		return URI.class;
70
	}
71
}
(35-35/44)