Statistics
| Revision:

gvsig-projects-pool / org.gvsig.vcsgis / trunk / org.gvsig.vcsgis / org.gvsig.vcsgis.lib / org.gvsig.vcsgis.lib.impl / src / main / java / org / gvsig / vcsgis / client / FeatureStoreObserver.java @ 2381

History | View | Annotate | Download (3.17 KB)

1
package org.gvsig.vcsgis.client;
2

    
3
import org.apache.commons.lang3.StringUtils;
4
import static org.gvsig.vcsgis.lib.VCSGisManager.OP_DELETE;
5
import static org.gvsig.vcsgis.lib.VCSGisManager.OP_INSERT;
6
import static org.gvsig.vcsgis.lib.VCSGisManager.OP_UPDATE;
7
import org.gvsig.fmap.dal.DALLocator;
8
import org.gvsig.fmap.dal.DataManager;
9
import org.gvsig.fmap.dal.feature.EditableFeature;
10
import org.gvsig.fmap.dal.feature.FeatureStore;
11
import org.gvsig.fmap.dal.feature.FeatureStoreNotification;
12
import org.gvsig.tools.observer.Observable;
13
import org.gvsig.tools.observer.Observer;
14

    
15
/**
16
 *
17
 * @author gvSIG Team
18
 */
19
public class FeatureStoreObserver implements Observer {
20

    
21
    @Override
22
    public void update(Observable observable, Object notification) {
23
        FeatureStoreNotification n = (FeatureStoreNotification) notification;
24
        FeatureStore store = (FeatureStore) n.getSource();
25
        VCSGisWorkspaceEx workspace;
26
        switch(n.getType()) {
27
            case FeatureStoreNotification.BEFORE_INSERT:
28
               workspace = VCSGisWorkspaceImpl.workspace(store);
29
               if( workspace!=null ) {
30
                    EditableFeature feature = (EditableFeature) n.getFeature();
31
                    if( StringUtils.isBlank(feature.getString("vcsgisID")) ) {
32
                        feature.set("vcsgisID", workspace.createUniqueID());
33
                    }
34
                    if( store.isAppending() ) {
35
                        workspace.add_change(OP_INSERT, store, feature);
36
                    }
37
                }
38
                break;
39
            case FeatureStoreNotification.AFTER_UPDATE:
40
                if( store.isAppending() ) {
41
                    workspace = VCSGisWorkspaceImpl.workspace(store);
42
                    if( workspace!=null ) {
43
                        workspace.add_change(OP_UPDATE, store, n.getFeature());
44
                    }
45
                }
46
                break;
47
            case FeatureStoreNotification.AFTER_DELETE:
48
                if( store.isAppending() ) {
49
                    workspace = VCSGisWorkspaceImpl.workspace(store);
50
                    if( workspace!=null ) {
51
                        workspace.add_change(OP_DELETE, store, n.getFeature());
52
                    }
53
                }
54
                break;
55
            case FeatureStoreNotification.AFTER_UPDATE_TYPE:
56
                if( store.isAppending() ) {
57
                    
58
                }
59
                break;
60
            case FeatureStoreNotification.BEFORE_FINISHEDITING:
61
                if( store.isEditing() ) {
62
                    workspace = VCSGisWorkspaceImpl.workspace(store);
63
                    if( workspace!=null ) {
64
                        workspace.add_changes(
65
                                store, 
66
                                n.getInsertedsFeatures(),
67
                                n.getUpdatedsFeatures(),
68
                                n.getDeletedsFeatures()
69
                        );
70
                    }
71
                }
72
                break;
73
        }
74
    }
75
    
76
    public static void install() {
77
        DataManager dataManager = DALLocator.getDataManager();
78
        FeatureStoreObserver obs = new FeatureStoreObserver();
79
        dataManager.addStoreObserver(obs);
80
    }
81
}