Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.impl / src / main / java / org / gvsig / fmap / dal / impl / dataprofile / ForeingKey.java @ 44259

History | View | Annotate | Download (2.02 KB)

1
package org.gvsig.fmap.dal.impl.dataprofile;
2

    
3
import org.gvsig.expressionevaluator.ExpressionBuilder;
4
import org.gvsig.expressionevaluator.ExpressionUtils;
5
import org.gvsig.fmap.dal.DALLocator;
6
import org.gvsig.fmap.dal.DataManager;
7
import static org.gvsig.fmap.dal.DataManager.DAL_FOREING_CODE;
8
import static org.gvsig.fmap.dal.DataManager.DAL_FOREING_TABLE;
9
import org.gvsig.fmap.dal.feature.AbstractDataProfile;
10
import org.gvsig.fmap.dal.feature.Feature;
11
import org.gvsig.fmap.dal.feature.FeatureQuery;
12
import org.gvsig.fmap.dal.feature.FeatureStore;
13
import org.gvsig.tools.dynobject.Tags;
14

    
15
/**
16
 *
17
 * @author jjdelcerro
18
 */
19
@SuppressWarnings("UseSpecificCatch")
20
public class ForeingKey extends AbstractDataProfile {
21
    
22
    public ForeingKey() {
23
        super(DataManager.DAL_FOREING_KEY, "Foreing key", Feature.class);
24
    }
25

    
26
    @Override
27
    public Object createData(Object data, Tags tags) {
28
        if( data == null ) {
29
            return null;
30
        }
31
        try {
32
            String foreingTableName = tags.getString(DAL_FOREING_TABLE,null);
33
            String foreingCodeName = tags.getString(DAL_FOREING_CODE, null);
34
            
35
            DataManager dataManager = DALLocator.getDataManager();
36
            FeatureStore store = (FeatureStore) dataManager.getStoresRepository().get(foreingTableName);
37
            if( store == null ) {
38
                return null;
39
            }
40
            ExpressionBuilder builder = ExpressionUtils.createExpressionBuilder();
41
            FeatureQuery query = store.createFeatureQuery();
42
            Feature feature = store.findFirst(
43
                    builder.eq(
44
                            builder.variable(foreingCodeName),
45
                            builder.constant(data)
46
                    ).toString()
47
            );
48
            return feature;
49
        } catch (Exception ex) {
50
            return null;
51
        }
52
    }
53
    
54
    public static void selfRegister() {
55
        DataManager dataManager = DALLocator.getDataManager();
56
        
57
        dataManager.registerDataProfile(new ForeingKey());
58
    }
59
    
60
}