Revision 36359 branches/v2_0_0_prep/libraries/libFMap_dal/src/org/gvsig/fmap/dal/feature/impl/DefaultFeatureStore.java
DefaultFeatureStore.java | ||
---|---|---|
821 | 821 |
} |
822 | 822 |
|
823 | 823 |
synchronized public void edit(int mode) throws DataException { |
824 |
LOG.debug("Starting editing in mode: {}", new Integer(mode)); |
|
824 | 825 |
try { |
825 | 826 |
if (this.mode != MODE_QUERY) { |
826 | 827 |
throw new AlreadyEditingException(this.getName()); |
... | ... | |
876 | 877 |
|
877 | 878 |
private void setIndexesValidStatus(boolean valid) { |
878 | 879 |
FeatureIndexes indexes = getIndexes(); |
880 |
LOG.debug("Setting the store indexes to valid status {}: {}", (valid |
|
881 |
? Boolean.TRUE : Boolean.FALSE), indexes); |
|
879 | 882 |
for (Iterator iterator = indexes.iterator(); iterator.hasNext();) { |
880 | 883 |
FeatureIndex index = (FeatureIndex) iterator.next(); |
881 |
if (index instanceof DefaultFeatureIndex) { |
|
882 |
((DefaultFeatureIndex) index).setValid(valid); |
|
884 |
if (index instanceof FeatureIndexProviderServices) { |
|
885 |
FeatureIndexProviderServices indexServices = |
|
886 |
(FeatureIndexProviderServices) index; |
|
887 |
indexServices.setValid(valid); |
|
883 | 888 |
} |
884 | 889 |
} |
885 | 890 |
} |
886 | 891 |
|
887 | 892 |
private void updateIndexes() throws FeatureIndexException { |
888 | 893 |
FeatureIndexes indexes = getIndexes(); |
894 |
LOG.debug("Refilling indexes: {}", indexes); |
|
889 | 895 |
for (Iterator iterator = indexes.iterator(); iterator.hasNext();) { |
890 | 896 |
FeatureIndex index = (FeatureIndex) iterator.next(); |
891 | 897 |
if (index instanceof FeatureIndexProviderServices) { |
... | ... | |
896 | 902 |
} |
897 | 903 |
} |
898 | 904 |
|
905 |
private void waitForIndexes() { |
|
906 |
FeatureIndexes indexes = getIndexes(); |
|
907 |
LOG.debug("Waiting for indexes to finish filling: {}", indexes); |
|
908 |
for (Iterator iterator = indexes.iterator(); iterator.hasNext();) { |
|
909 |
FeatureIndex index = (FeatureIndex) iterator.next(); |
|
910 |
if (index instanceof FeatureIndexProviderServices) { |
|
911 |
FeatureIndexProviderServices indexServices = |
|
912 |
(FeatureIndexProviderServices) index; |
|
913 |
indexServices.waitForIndex(); |
|
914 |
} |
|
915 |
} |
|
916 |
} |
|
917 |
|
|
899 | 918 |
private void disposeIndexes() { |
900 | 919 |
FeatureIndexes indexes = getIndexes(); |
920 |
LOG.debug("Disposing indexes: {}", indexes); |
|
901 | 921 |
for (Iterator iterator = indexes.iterator(); iterator.hasNext();) { |
902 | 922 |
FeatureIndex index = (FeatureIndex) iterator.next(); |
903 | 923 |
if (index instanceof FeatureIndexProviderServices) { |
... | ... | |
961 | 981 |
|
962 | 982 |
synchronized public void insert(EditableFeature feature) |
963 | 983 |
throws DataException { |
984 |
LOG.debug("In editing mode {}, insert feature: {}", new Integer(mode), |
|
985 |
feature); |
|
964 | 986 |
try { |
965 | 987 |
switch (mode) { |
966 | 988 |
case MODE_QUERY: |
... | ... | |
985 | 1007 |
if (feature.getSource() != null) { |
986 | 1008 |
throw new NoNewFeatureInsertException(this.getName()); |
987 | 1009 |
} |
1010 |
|
|
1011 |
waitForIndexes(); |
|
1012 |
|
|
988 | 1013 |
notifyChange(FeatureStoreNotification.BEFORE_INSERT, feature); |
989 | 1014 |
newVersionOfUpdate(); |
990 | 1015 |
if ((lastChangedFeature == null) |
... | ... | |
1105 | 1130 |
} |
1106 | 1131 |
|
1107 | 1132 |
synchronized public void finishEditing() throws DataException { |
1133 |
LOG.debug("finish editing of mode: {}", new Integer(mode)); |
|
1108 | 1134 |
try { |
1109 | 1135 |
switch (mode) { |
1110 | 1136 |
case MODE_QUERY: |
... | ... | |
1122 | 1148 |
if (hasStrongChanges && !this.allowWrite()) { |
1123 | 1149 |
throw new WriteNotAllowedException(getName()); |
1124 | 1150 |
} |
1125 |
|
|
1126 | 1151 |
notifyChange(FeatureStoreNotification.BEFORE_FINISHEDITING); |
1127 | 1152 |
if (hasStrongChanges) { |
1128 | 1153 |
validateFeatures(Feature.FINISH_EDITING); |
Also available in: Unified diff