Revision 47436 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/feature/impl/DefaultFeatureAttributeDescriptor.java

View differences:

DefaultFeatureAttributeDescriptor.java
97 97
import org.gvsig.tools.evaluator.EvaluatorData;
98 98
import org.gvsig.tools.evaluator.EvaluatorException;
99 99
import org.gvsig.tools.i18n.I18nManager;
100
import org.gvsig.tools.observer.BaseNotification;
101
import org.gvsig.tools.observer.Observable;
102
import org.gvsig.tools.observer.ObservableHelper;
103
import org.gvsig.tools.observer.Observer;
100 104
import org.gvsig.tools.persistence.PersistenceManager;
101 105
import org.gvsig.tools.persistence.Persistent;
102 106
import org.gvsig.tools.persistence.PersistentState;
......
108 112

  
109 113
@SuppressWarnings("UseSpecificCatch")
110 114
public class DefaultFeatureAttributeDescriptor implements
111
        FeatureAttributeDescriptor, Persistent, DynField_v2, DynField_LabelAttribute {
115
        FeatureAttributeDescriptor, Persistent, DynField_v2, DynField_LabelAttribute, Observable {
112 116

  
113 117
    protected static final Logger LOGGER = LoggerFactory.getLogger(DefaultFeatureAttributeDescriptor.class);
114 118

  
119
    public static final String NOTIFICATION_FIXED_CHANGED = "fixed_changed";
115 120
    protected boolean allowNull;
116 121
    protected DataType dataType;
117 122
    protected String dataProfile;
......
170 175
    protected int displaySize;
171 176
    
172 177
    protected String defaultFormat;
178
    protected boolean fixed;
179
    protected ObservableHelper observableHelper;
173 180

  
174 181
    public DefaultFeatureAttributeDescriptor() {
175 182
        // Usada en la persistencia
176 183
        this.precision = DataType.PRECISION_NONE;
177 184
        this.scale = DataType.SCALE_NONE;
178 185
        this.roundMode = BigDecimal.ROUND_HALF_UP;
186
        this.fixed = false;
187
        this.observableHelper = new ObservableHelper();
188
        
179 189
    }
180 190

  
181 191
    protected DefaultFeatureAttributeDescriptor(FeatureType type) {
......
308 318
            this.typeRef = new WeakReference(type);
309 319
//            LOGGER.info(String.format("FeatureAttributeDescriptor[%08x] set FeatureType [%08x], ref [%08x].", this.hashCode(), type.hashCode(), typeRef.hashCode()));
310 320
        }
321
        this.setFixed(false);
311 322
    }
312 323

  
313 324
    @Override
......
362 373

  
363 374
    public FeatureAttributeDescriptor setDataType(int type) {
364 375
        this.dataType = ToolsLocator.getDataTypesManager().get(type);
376
        this.setFixed(false);
365 377
        return this;
366 378
    }
367 379

  
......
460 472

  
461 473
    protected FeatureAttributeDescriptor setIndex(int index) {
462 474
        this.index = index;
475
        this.setFixed(false);
463 476
        return this;
464 477
    }
465 478

  
......
805 818
        avoidCachingAvailableValues = state.getBoolean("avoidCachingAvailableValues", false);
806 819
        availableValuesCache = null;
807 820
        defaultFormat = state.getString("defaultFormat");
821
        this.setFixed(false);
808 822
    }
809 823

  
810 824
    @Override
......
988 1002

  
989 1003
    public FeatureAttributeDescriptor setAvailableValuesFilter(Expression filter) {
990 1004
        this.availableValuesFilter = filter;
1005
        this.setFixed(false);
991 1006
        return this;
992 1007
    }
993 1008

  
994 1009
    public FeatureAttributeDescriptor setAvailableValuesFilter(String filter) {
995 1010
        this.availableValuesFilter = ExpressionUtils.createExpression(filter);
1011
        this.setFixed(false);
996 1012
        return this;
997 1013
    }
998 1014

  
......
1276 1292
            return this;
1277 1293
        }
1278 1294
        this.availableValuesExpression = ExpressionUtils.createExpression(expression);
1295
        this.setFixed(false);
1279 1296
        return this;
1280 1297
    }
1281 1298

  
1282 1299
    @Override
1283 1300
    public FeatureAttributeDescriptor setAvailableValuesExpression(Expression expression) {
1284 1301
        this.availableValuesExpression = expression;
1302
        this.setFixed(false);
1285 1303
        return this;
1286 1304
    }
1287 1305

  
......
1379 1397
                this.availableValues[i] = new DynObjectValueItem(value, element.getLabel());
1380 1398
            }
1381 1399
        }
1400
        this.setFixed(false);
1382 1401
        return this;
1383 1402
    }
1384 1403

  
1385 1404
    @Override
1386 1405
    public DynField setDescription(String description) {
1387 1406
        this.description = description;
1407
        this.setFixed(false);
1388 1408
        return this;
1389 1409
    }
1390 1410

  
......
1437 1457
    @Override
1438 1458
    public DynField setDefaultFieldValue(Object defaultValue) {
1439 1459
        this.defaultValue = defaultValue;
1460
        this.setFixed(false);
1440 1461
        return this;
1441 1462
    }
1442 1463

  
......
1470 1491

  
1471 1492
    public FeatureAttributeDescriptor setDataProfileName(String dataProfile) {
1472 1493
        this.dataProfile = dataProfile;
1494
        this.setFixed(false);
1473 1495
        return this;
1474 1496
    }
1475 1497

  
......
1539 1561
                    new DynObjectValueItem[values.size()]
1540 1562
            );
1541 1563
        }
1564
        this.setFixed(false);
1542 1565
        return this;
1543 1566
    }
1544 1567

  
......
1572 1595
    @Override
1573 1596
    public DynField setLabel(String label) {
1574 1597
        this.label = label;
1598
        this.setFixed(false);
1575 1599
        return this;
1576 1600
    }
1577 1601

  
1578 1602
    @Override
1579 1603
    public DynField setShortLabel(String shortLabel) {
1580 1604
        this.shortLabel = shortLabel;
1605
        this.setFixed(false);
1581 1606
        return this;
1582 1607
    }
1583 1608

  
......
1598 1623
    @Override
1599 1624
    public DynField setGroup(String groupName) {
1600 1625
        this.groupName = groupName;
1626
        this.setFixed(false);
1601 1627
        return this;
1602 1628
    }
1603 1629

  
1604 1630
    @Override
1605 1631
    public DynField setOrder(int order) {
1606 1632
        this.order = order;
1633
        this.setFixed(false);
1607 1634
        return this;
1608 1635
    }
1609 1636

  
1610 1637
    @Override
1611 1638
    public DynField setHidden(boolean hidden) {
1612 1639
        this.hidden = hidden;
1640
        this.setFixed(false);
1613 1641
        return this;
1614 1642
    }
1615 1643

  
......
1621 1649
    @Override
1622 1650
    public DynField setReadOnly(boolean readOnly) {
1623 1651
        this.readOnly = readOnly;
1652
        this.setFixed(false);
1624 1653
        return this;
1625 1654
    }
1626 1655

  
......
1663 1692
    public void setFeatureAttributeGetter(
1664 1693
            FeatureAttributeGetter featureAttributeTransform) {
1665 1694
        this.featureAttributeGetter = featureAttributeTransform;
1695
        this.setFixed(false);
1666 1696
    }
1667 1697

  
1668 1698
    @Override
......
1672 1702

  
1673 1703
    public FeatureAttributeDescriptor setFeatureAttributeEmulator(FeatureAttributeEmulator featureAttributeEmulator) {
1674 1704
        this.featureAttributeEmulator = featureAttributeEmulator;
1705
        this.setFixed(false);
1675 1706
        return this;
1676 1707
    }
1677 1708

  
......
1753 1784
    @Override
1754 1785
    public DynField setRelationType(int relationType) {
1755 1786
        this.relationType = relationType;
1787
        this.setFixed(false);
1756 1788
        return this;
1757 1789
    }
1758 1790

  
......
1764 1796
    @Override
1765 1797
    public DynField setAvailableValues(DynMethod availableValuesMethod) {
1766 1798
        this.availableValuesMethod = availableValuesMethod;
1799
        this.setFixed(false);
1767 1800
        return this;
1768 1801
    }
1769 1802

  
......
1792 1825
    @Override
1793 1826
    public DynField setCalculateMethod(DynMethod method) {
1794 1827
        this.calculateMethod = method;
1828
        this.setFixed(false);
1795 1829
        return this;
1796 1830
    }
1797 1831

  
......
1881 1915
        } else {
1882 1916
            this.evaluator = null;
1883 1917
        }
1918
        this.setFixed(false);
1884 1919
    }
1885 1920

  
1886 1921
    @Override
......
1909 1944

  
1910 1945
    public FeatureAttributeDescriptor setInterval(Interval interval) {
1911 1946
        this.interval = interval;
1947
        this.setFixed(false);
1912 1948
        return this;
1913 1949
    }
1914 1950

  
1915 1951
    public void fixAll() {
1952
        if(this.fixed) {
1953
            return;
1954
        }
1916 1955
        if (!this.getDataType().supportSize()) {
1917 1956
            this.size = 0;
1918 1957
        }
......
1935 1974
//        if( this.isPrimaryKey() ) {
1936 1975
//            this.allowNull = false;
1937 1976
//        }
1977
        this.fixed = true;
1938 1978
        
1939 1979
    }
1940 1980

  
......
2322 2362

  
2323 2363
    public void setSRSForced(IProjection SRS) {
2324 2364
        this.SRS = SRS;
2365
        this.setFixed(false);
2325 2366
    }
2326 2367

  
2327 2368
    @Override
......
2440 2481
            this.foreingKey = null;
2441 2482
        }
2442 2483
        this.defaultFormat = json.getString("defaultFormat",null);
2484
        this.setFixed(false);
2443 2485
    }
2444 2486

  
2445 2487
    private static class TheJsonSerializer implements JsonManager.JsonSerializer {
......
2504 2546
        }
2505 2547
    }
2506 2548

  
2549
    public void setFixed(boolean fixed){
2550
        this.fixed = fixed;
2551
        this.observableHelper.notifyObservers(this, new BaseNotification(NOTIFICATION_FIXED_CHANGED, 0));
2552
    }
2507 2553
    
2554
    public boolean isFixed() {
2555
        return this.fixed;
2556
    }
2557
    
2558
    @Override
2559
    public void addObserver(Observer o) {
2560
        this.observableHelper.addObserver(o);
2561
    }
2562

  
2563
    @Override
2564
    public void deleteObserver(Observer o) {
2565
        this.observableHelper.deleteObserver(o);
2566
    }
2567

  
2568
    @Override
2569
    public void deleteObservers() {
2570
        this.observableHelper.deleteObservers();
2571
    }
2572

  
2508 2573
}

Also available in: Unified diff