Revision 2080 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/dataTypes/impl/coercion/CoerceToURI.java

View differences:

CoerceToURI.java
28 28
import java.net.URISyntaxException;
29 29

  
30 30
import org.apache.commons.lang3.StringUtils;
31
import org.gvsig.tools.dataTypes.AbstractCoercion;
32
import org.gvsig.tools.dataTypes.CoercionContext;
31 33

  
32 34
import org.gvsig.tools.dataTypes.CoercionException;
33
import org.gvsig.tools.dataTypes.DataTypesManager.Coercion;
35
import org.gvsig.tools.dataTypes.DataTypesManager;
34 36

  
35

  
36 37
/**
37 38
 *
38 39
 */
39
public class CoerceToURI implements Coercion {
40
public class CoerceToURI extends AbstractCoercion {
40 41

  
41
	public Object coerce(Object value) throws CoercionException {
42
    	if( value == null ) {
43
    		return null;
44
    	}
45
		if( ! (value instanceof URI) ) {
46
			if( value instanceof String ) {
47
                                if(((String)value).isEmpty() ) {
48
                                    return null;
49
                                }
50
				try {
51
                    // Todo esto es para intentar solucionar la carga de
52
                    // proyectos antiguos donde campos que deber?an ser URIs se
53
                    // guardaban como Strings
54
				    String strValue = StringUtils.trim((String) value);
55
				    String strValue2 = StringUtils.replace(strValue, " ", "%20");
56
					URI uri = new URI(strValue2);
57
					String scheme = uri.getScheme();
58
                    if(StringUtils.isEmpty(scheme) || scheme.length()==1){
59
					    uri = (new File(strValue)).toURI();
60
					}
61
                    value = uri;
62
				} catch (URISyntaxException e) {
63
					throw new CoercionException(e);
64
				}
65
            } else {
66
                String s = value.toString();
67
                if (s == null) {
68
                    return null;
69
                }
70
                s = s.trim().toLowerCase();
71
                if (s.length() == 0) {
72
                    return null;
73
                }
74
                throw new CoercionException();
75
            }
76
		}
77
		return value;
78
	}
42
  @Override
43
  public Object coerce(Object value, CoercionContext context) throws CoercionException {
44
    if (value == null || value instanceof URI) {
45
      return value;
46
    }
47
    if (value instanceof String) {
48
      if (((String) value).isEmpty()) {
49
        return null;
50
      }
51
      try {
52
        // Todo esto es para intentar solucionar la carga de
53
        // proyectos antiguos donde campos que deber?an ser URIs se
54
        // guardaban como Strings
55
        String strValue = StringUtils.trim((String) value);
56
        String strValue2 = StringUtils.replace(strValue, " ", "%20");
57
        URI uri = new URI(strValue2);
58
        String scheme = uri.getScheme();
59
        if (StringUtils.isEmpty(scheme) || scheme.length() == 1) {
60
          uri = (new File(strValue)).toURI();
61
        }
62
        value = uri;
63
      } catch (URISyntaxException e) {
64
        throw new CoercionException(e);
65
      }
66
    } else {
67
      String s = value.toString();
68
      if (s == null) {
69
        return null;
70
      }
71
      s = s.trim().toLowerCase();
72
      if (s.length() == 0) {
73
        return null;
74
      }
75
      throw new CoercionException();
76
    }
77
    return value;
78
  }
79 79

  
80 80
}

Also available in: Unified diff