Revision 3459 org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.lib/org.gvsig.vcsgis.lib.impl/src/main/java/org/gvsig/vcsgis/lib/workspace/VCSGisWorkspaceImpl.java

View differences:

VCSGisWorkspaceImpl.java
165 165
    private final ChangeListenerHelper workspaceEntitiesChangeListeners;
166 166
    private final ChangeListenerHelper repositoryEntitiesChangeListeners;
167 167

  
168
    private String currentUser;
168
    private String currentUserCode;
169 169
    private String authenticationToken;
170 170
    private VCSGisUserIdentificationRequester userIdentificationRequester;
171 171
    
......
181 181
        this.label = label;
182 182
        this.workspaceEntitiesChangeListeners = ToolsSwingLocator.getToolsSwingManager().createChangeListenerHelper();
183 183
        this.repositoryEntitiesChangeListeners = ToolsSwingLocator.getToolsSwingManager().createChangeListenerHelper();
184
        this.currentUser = null;
184
        this.currentUserCode = null;
185 185
        this.authenticationToken = null;
186 186
        this.userIdentificationRequester = null;
187 187
//        LOGGER.debug("===: CREATE WORKSPACE "+ hexId(this)+ " (init label='"+this.label+"')");
......
203 203
        if (this.code == null) {
204 204
            throw new RuntimeException("Can't retrieve code from workspace '" + this.getMessageLabel() + "'");
205 205
        }
206
        this.currentUser = varsTable.get(this, "USER");
206
        this.currentUserCode = varsTable.get(this, "USER");
207 207
        this.authenticationToken = varsTable.get(this, "AUTHENTICATIONTOKEN");
208 208
        this.reloadWorkspaceEntities();
209 209
        this.repository = (VCSGisRepository) Json.toObject(varsTable.get(this, "REPOSITORY"));
......
1586 1586
            reloadRepositoryEntities(status);
1587 1587
            request = this.getRepository().createCommitRequest();
1588 1588
            request.setAuthenticationToken(this.authenticationToken);
1589
            request.setUserCode(this.currentUser);
1589
            request.setUserCode(this.currentUserCode);
1590 1590

  
1591 1591
            boolean useSeleccion = this.prepareCommitRequest(request, entityCodes, revisiondate, efectivedate, comment, status);
1592 1592

  
......
1679 1679
            reloadRepositoryEntities(status);
1680 1680
            request = this.getRepository().createCheckoutRequest(tableName);
1681 1681
            request.setAuthenticationToken(this.authenticationToken);
1682
            request.setUserCode(this.currentUser);
1682
            request.setUserCode(this.currentUserCode);
1683 1683
            request.setEfectiveDate((Timestamp) null);
1684 1684
            request.setRevisionCode(revisionCode);
1685 1685

  
......
1763 1763

  
1764 1764
        }
1765 1765
    }
1766
    
1767
    @Override
1768
    public int checkout(List<String> tableNames, SimpleTaskStatus status){
1769
        for (String tableName : tableNames) {
1770
            int r = checkout(tableName, null, status);
1771
            if(r != ERR_NO_ERROR){
1772
                return r;
1773
            }
1774
        }
1775
        return ERR_NO_ERROR;
1776
    }
1766 1777

  
1778

  
1767 1779
    private void updateUsersFromRepository(SimpleTaskStatus status) {
1768 1780
        FeatureStore usersStore = null;
1769 1781
        VCSGisUsersRequest request = null;
1770 1782
        try {
1771 1783
            request = this.getRepository().createUsersRequest();
1772 1784
            request.setAuthenticationToken(this.authenticationToken);
1773
            request.setUserCode(this.currentUser);
1785
            request.setUserCode(this.currentUserCode);
1774 1786

  
1775 1787
            status.message("Executing users request");
1776 1788
            if ( execute(request) != ERR_OK) {
......
1804 1816
        try {
1805 1817
            request = this.getRepository().createTopologyPlansRequest();
1806 1818
            request.setAuthenticationToken(this.authenticationToken);
1807
            request.setUserCode(this.currentUser);
1819
            request.setUserCode(this.currentUserCode);
1808 1820

  
1809 1821
            status.message("Executing topology plans request");
1810 1822
            if ( execute(request) != ERR_OK) {
......
1912 1924
            request = this.getRepository().createUpdateRequest(tableName);
1913 1925
            transaction.add(request);
1914 1926
            request.setAuthenticationToken(this.authenticationToken);
1915
            request.setUserCode(this.currentUser);
1927
            request.setUserCode(this.currentUserCode);
1916 1928
            EntityRow lentity = this.getWorkspaceEntityByName(tableName);
1917 1929
            if (lentity != null) {
1918 1930
                request.setLocalRevisionCode(lentity.getLocalRevisionCode());
......
2602 2614
            status.message("Getting repository table metadata");
2603 2615
            VCSGisEntitiesRequest request = this.getRepository().createEntitiesRequest();
2604 2616
            request.setAuthenticationToken(this.authenticationToken);
2605
            request.setUserCode(this.currentUser);
2617
            request.setUserCode(this.currentUserCode);
2606 2618
            if ( execute(request) != ERR_OK) {
2607 2619
                throw new VCSGisRuntimeException(request.getLastErrorCode(), request.getLastErrorMessage());
2608 2620
            }
......
2742 2754
            transaction.add(request);
2743 2755

  
2744 2756
            request.setAuthenticationToken(this.authenticationToken);
2745
            request.setUserCode(this.currentUser);
2757
            request.setUserCode(this.currentUserCode);
2746 2758
            request.setDateRange(minDate, maxDate);
2747 2759
            request.setMaxNumberOfRevisions(maxNumberOfRevisions);
2748 2760
            request.setRevisionNumberRange(-1, -1);
......
2849 2861
            transaction.add(request);
2850 2862

  
2851 2863
            request.setAuthenticationToken(this.authenticationToken);
2852
            request.setUserCode(this.currentUser);
2864
            request.setUserCode(this.currentUserCode);
2853 2865
            request.setDateRange(null, null);
2854 2866
            request.setMaxNumberOfRevisions(maxNumberOfRevisions);
2855 2867
            request.setRevisionNumberRange(-1, minRevision);
......
2981 2993

  
2982 2994
        DataTransaction transaction = DALLocator.getDataManager().createTransaction();
2983 2995
        try {
2984
            LOGGER.debug("===: REMOVE ENTITY " + entity.getEntityName());
2996
            err = doRemoveEntity(entity, transaction);
2997
            forceReloadWorkspaceEntities();
2998
            transaction.commit();
2999
            return ERR_OK;
3000
        } catch (Exception ex) {
3001
            LOGGER.warn("Can't remove entity.", ex);
3002
            transaction.rollbackQuietly();
3003
            return err;
3004
        } finally {
3005
            transaction.dispose();
3006
        }
3007
    }
2985 3008

  
3009
    @Override
3010
    public int removeEntities(List<String> namesOrCodes) {
3011
        int err = ERR_NO_ERROR;
3012
        DataTransaction transaction = DALLocator.getDataManager().createTransaction();
3013
        
3014
        try {
3015
            for (String nameOrCode : namesOrCodes) {
3016
                EntityRow entity = this.getWorkspaceEntity(nameOrCode);
3017
                if(entity == null){
3018
                    err = ERR_ENTITY_NOT_EXISTS;
3019
                    return err;
3020
                }
2986 3021

  
2987
            //Eliminamos todos los cambios de esta entidad
2988
            err = ERR_CANT_REMOVE_CHANGES;
2989
            FeatureStore changesStore = this.openFeatureStore(WorkspaceChangesTable.TABLE_NAME);
2990
            transaction.add(changesStore);
2991
            changesStore.edit(MODE_FULLEDIT);
2992
            changesStore.delete("\""+WorkspaceChangesTable.COD_ENTITY+"\"='"+entity.getEntityCode()+"'");
2993
            changesStore.finishEditing();
2994

  
2995
            FeatureStore remoteChangesStore = this.openFeatureStore(RemoteChangesTable.TABLE_NAME);
2996
            transaction.add(remoteChangesStore);
2997
            remoteChangesStore.edit(MODE_FULLEDIT);
2998
            remoteChangesStore.delete("\""+RemoteChangesTable.COD_ENTITY+"\"='"+entity.getEntityCode()+"'");
2999
            remoteChangesStore.finishEditing();
3000

  
3001
            //Eliminamos las revisiones locales
3002
            FeatureStore revisionsStore = openFeatureStore(LocalRevisionsTable.TABLE_NAME);       
3003
            transaction.add(revisionsStore);
3004
            revisionsStore.edit(MODE_FULLEDIT);
3005
            revisionsStore.delete("\""+LocalRevisionsTable.COD_ENTITY+"\"='"+entity.getEntityCode()+"'");
3006
            revisionsStore.finishEditing();
3007
            err = ERR_CANT_REMOVE_ENTITY;
3008

  
3009

  
3010
            //Eliminamos la entidad
3011
            FeatureStore entitiesStore = openFeatureStore(EntitiesTable.TABLE_NAME);       
3012
            transaction.add(entitiesStore);
3013
            entitiesStore.edit(MODE_FULLEDIT);
3014
            entitiesStore.delete("\""+EntitiesTable.COD_ENTITY+"\"='"+entity.getEntityCode()+"'");
3015
            entitiesStore.finishEditing();
3016
            err = ERR_CANT_REMOVE_ENTITY;
3017

  
3018

  
3019
            //Eliminamos el DALFILE
3020
            FeatureStore store = this.openFeatureStore(entity);
3021
            if(store != null){
3022
                transaction.add(store);
3023
                ResourcesStorage resourcesStorage = store.getResourcesStorage();
3024
                if (resourcesStorage != null) {
3025
                    Resource resource = resourcesStorage.getResource("dal");
3026
                    if (resource != null) {
3027
                        resourcesStorage.remove(resource.getName());
3028
                    }
3029
                }
3030
            
3031
                //Eliminamos el store
3032
                transaction.add(this.wsexplorer, false);
3033
                this.wsexplorer.remove(store.getParameters());
3022
                doRemoveEntity(entity, transaction);
3034 3023
            }
3035 3024
            
3036 3025
            forceReloadWorkspaceEntities();
......
3046 3035
        
3047 3036
    }
3048 3037

  
3038
    private int doRemoveEntity(EntityRow entity, DataTransaction transaction) throws DataException {
3039
        int err;
3040
        LOGGER.debug("===: REMOVE ENTITY " + entity.getEntityName());
3041
        //Eliminamos todos los cambios de esta entidad
3042
        err = ERR_CANT_REMOVE_CHANGES;
3043
        FeatureStore changesStore = this.openFeatureStore(WorkspaceChangesTable.TABLE_NAME);
3044
        transaction.add(changesStore);
3045
        changesStore.edit(MODE_FULLEDIT);
3046
        changesStore.delete("\""+WorkspaceChangesTable.COD_ENTITY+"\"='"+entity.getEntityCode()+"'");
3047
        changesStore.finishEditing();
3048
        FeatureStore remoteChangesStore = this.openFeatureStore(RemoteChangesTable.TABLE_NAME);
3049
        transaction.add(remoteChangesStore);
3050
        remoteChangesStore.edit(MODE_FULLEDIT);
3051
        remoteChangesStore.delete("\""+RemoteChangesTable.COD_ENTITY+"\"='"+entity.getEntityCode()+"'");
3052
        remoteChangesStore.finishEditing();
3053
        //Eliminamos las revisiones locales
3054
        FeatureStore revisionsStore = openFeatureStore(LocalRevisionsTable.TABLE_NAME);
3055
        transaction.add(revisionsStore);
3056
        revisionsStore.edit(MODE_FULLEDIT);
3057
        revisionsStore.delete("\""+LocalRevisionsTable.COD_ENTITY+"\"='"+entity.getEntityCode()+"'");
3058
        revisionsStore.finishEditing();
3059
        err = ERR_CANT_REMOVE_ENTITY;
3060
        //Eliminamos la entidad
3061
        FeatureStore entitiesStore = openFeatureStore(EntitiesTable.TABLE_NAME);
3062
        transaction.add(entitiesStore);
3063
        entitiesStore.edit(MODE_FULLEDIT);
3064
        entitiesStore.delete("\""+EntitiesTable.COD_ENTITY+"\"='"+entity.getEntityCode()+"'");
3065
        entitiesStore.finishEditing();
3066
        err = ERR_CANT_REMOVE_ENTITY;
3067
        //Eliminamos el DALFILE
3068
        FeatureStore store = this.openFeatureStore(entity);
3069
        if(store != null){
3070
            transaction.add(store);
3071
            ResourcesStorage resourcesStorage = store.getResourcesStorage();
3072
            if (resourcesStorage != null) {
3073
                Resource resource = resourcesStorage.getResource("dal");
3074
                if (resource != null) {
3075
                    resourcesStorage.remove(resource.getName());
3076
                }
3077
            }
3078
            
3079
            //Eliminamos el store
3080
            transaction.add(this.wsexplorer, false);
3081
            this.wsexplorer.remove(store.getParameters());
3082
        }
3083
        return err;
3084
    }
3085

  
3049 3086
    @Override
3050 3087
    public boolean authenticate(SimpleTaskStatus status) {
3051
        if( this.currentUser != null ) {
3088
        if( StringUtils.isNotBlank(this.currentUserCode) ) {
3052 3089
            return true;
3053 3090
        }
3054 3091
        int r = authenticate(null, null, status);
......
3091 3128
            VarsTable varsTable = new VarsTable();
3092 3129
            varsTable.set(this,"USER",request.getUserCode());
3093 3130
            varsTable.set(this,"AUTHENTICATIONTOKEN",request.getAuthenticationToken());
3094
            this.currentUser = request.getUserCode();
3131
            this.currentUserCode = request.getUserCode();
3095 3132
            this.authenticationToken = request.getAuthenticationToken();
3096 3133
            this.getRepository().setAuthenticationToken(request.getAuthenticationToken());
3097 3134
            this.getRepository().setUserCode(request.getUserCode());
......
3130 3167
                            int r = this.authenticate(this.userIdentificationRequester.getUserId(), this.userIdentificationRequester.getPassword(), null);
3131 3168
                            if(r == ERR_OK){
3132 3169
                                request.setAuthenticationToken(this.authenticationToken);
3133
                                request.setUserCode(this.currentUser);
3170
                                request.setUserCode(this.currentUserCode);
3134 3171
                            }
3135 3172
                            continue;
3136 3173
                        }
......
3398 3435
            reloadRepositoryEntities(status);
3399 3436
            request = this.getRepository().createCheckoutRequest(entityName);
3400 3437
            request.setAuthenticationToken(this.authenticationToken);
3401
            request.setUserCode(this.currentUser);
3438
            request.setUserCode(this.currentUserCode);
3402 3439
            request.setEfectiveDate(efectiveDate);
3403 3440
            request.setRevisionCode(revisionCode);
3404 3441

  

Also available in: Unified diff