Revision 29326 branches/v2_0_0_prep/libraries/libFMap_daldb/src/org/gvsig/fmap/dal/store/jdbc/JDBCStoreProvider.java

View differences:

JDBCStoreProvider.java
61 61
import org.gvsig.fmap.dal.feature.spi.FeatureProvider;
62 62
import org.gvsig.fmap.dal.feature.spi.FeatureReferenceProviderServices;
63 63
import org.gvsig.fmap.dal.feature.spi.FeatureSetProvider;
64
import org.gvsig.fmap.dal.feature.spi.FeatureStoreProvider;
65
import org.gvsig.fmap.dal.feature.spi.FeatureStoreProviderServices;
66 64
import org.gvsig.fmap.dal.resource.Resource;
67 65
import org.gvsig.fmap.dal.resource.exception.ResourceBeginException;
68 66
import org.gvsig.fmap.dal.resource.spi.ResourceProvider;
67
import org.gvsig.fmap.dal.spi.DataStoreProviderServices;
69 68
import org.gvsig.fmap.dal.store.jdbc.exception.InvalidResultSetIdException;
70 69
import org.gvsig.fmap.dal.store.jdbc.exception.JDBCException;
71 70
import org.gvsig.fmap.dal.store.jdbc.exception.JDBCExecuteSQLException;
......
74 73
import org.gvsig.fmap.geom.operation.towkb.ToWKB;
75 74
import org.gvsig.fmap.geom.primitive.Envelope;
76 75
import org.gvsig.tools.ToolsLocator;
77
import org.gvsig.tools.dynobject.DelegatedDynObject;
78 76
import org.gvsig.tools.dynobject.DynClass;
77
import org.gvsig.tools.dynobject.DynObject;
79 78
import org.gvsig.tools.dynobject.DynObjectManager;
80 79
import org.gvsig.tools.exception.BaseException;
81 80
import org.slf4j.Logger;
......
101 100

  
102 101
	private long mlsecondsToZombie = 1000 * 60 * 10; // 10 Min
103 102

  
104
	protected JDBCStoreParameters params;
105 103
	protected JDBCHelper helper;
106 104

  
107 105
	protected boolean directSQLMode;
......
109 107
	private Long totalCount = null;
110 108

  
111 109

  
112
	public JDBCStoreProvider() {
113
		super();
114
		resulsetList = new ArrayList(10);
110
	public JDBCStoreProvider(JDBCStoreParameters params,
111
			DataStoreProviderServices storeServices) throws InitializeException {
112
		this(params, storeServices, ToolsLocator.getDynObjectManager()
113
				.createDynObject(DYNCLASS));
115 114
	}
116 115

  
117
	public JDBCStoreProvider(JDBCStoreParameters params)
116
	protected JDBCStoreProvider(JDBCStoreParameters params,
117
			DataStoreProviderServices storeServices, DynObject metadata)
118 118
			throws InitializeException {
119
		this();
120
		this.init(params);
119
		super(params, storeServices, metadata);
120

  
121
		resulsetList = new ArrayList(10);
122

  
123
		helper = createHelper();
124
		if (params.getSQL() != null && (params.getSQL()).trim().length() > 0) {
125
			directSQLMode = true;
126
		}
127

  
128

  
129
		this.setDynValue("DefaultSRS", null);
130
		this.setDynValue("Envelope", null);
131
		this.initFeatureType();
121 132
	}
122 133

  
123 134

  
135

  
136
	protected JDBCStoreParameters getJDBCParameters() {
137
		return (JDBCStoreParameters) this.getParameters();
138
	}
139

  
140

  
124 141
	protected static void registerDynClass() {
125 142
		DynObjectManager dynman = ToolsLocator.getDynObjectManager();
126 143
		DynClass dynClass;
......
448 465
		return filter;
449 466
	}
450 467

  
451
	public void init(JDBCStoreParameters params) throws InitializeException {
452
		this.params = params;
453
		helper = createHelper();
454
		if (params.getSQL() != null && (params.getSQL()).trim().length() > 0) {
455
			directSQLMode = true;
456
		}
457

  
458
		this.metadata = (DelegatedDynObject) ToolsLocator
459
				.getDynObjectManager().createDynObject(DYNCLASS);
460

  
461
		this.metadata.setDynValue("DefaultSRS", null);
462
		this.metadata.setDynValue("Envelope", null);
463

  
464
	}
465

  
466 468
	protected JDBCHelper createHelper() throws InitializeException {
467
		return new JDBCHelper(this, params);
469
		return new JDBCHelper(this, getJDBCParameters());
468 470
	}
469 471

  
470 472
	protected JDBCHelper getHelper() {
......
528 530

  
529 531
	public FeatureProvider getFeatureProviderByReference(
530 532
			FeatureReferenceProviderServices reference) throws DataException {
531
		return getFeatureProviderByReference(reference, store
533
		return getFeatureProviderByReference(reference, getFeatureStore()
532 534
				.getDefaultFeatureType());
533 535
	}
534 536

  
......
539 541
		resourceBegin();
540 542
		try {
541 543
			StringBuilder filter = new StringBuilder();
542
			FeatureAttributeDescriptor[] pk = store.getFeatureType(
544
			FeatureAttributeDescriptor[] pk = getFeatureStore().getFeatureType(
543 545
					featureType.getId()).getPrimaryKey();
544 546

  
545 547
			List values = new ArrayList();
......
588 590

  
589 591
		EditableFeatureType edFType = null;
590 592
		try {
591
			edFType = this.store.createFeatureType();
593
			edFType = this.getStoreServices().createFeatureType();
592 594

  
593
			helper.loadFeatureType(edFType, params);
595
			helper.loadFeatureType(edFType, getJDBCParameters());
594 596

  
595 597
		} catch (DataException e) {
596 598
			throw new InitializeException(this.getName(), e);
......
599 601
		FeatureType defaultType = edFType.getNotEditableCopy();
600 602
		List types = new ArrayList(1);
601 603
		types.add(defaultType);
602
		this.store.setFeatureTypes(types, defaultType);
604
		this.getStoreServices().setFeatureTypes(types, defaultType);
603 605
		try {
604 606
			loadMetadata();
605 607
		} catch (DataException e) {
......
692 694
		// Select
693 695
		StringBuilder sql = new StringBuilder();
694 696
		sql.append("Select count(");
695
		String[] pkFields = params.getPkFields();
697
		String[] pkFields = getJDBCParameters().getPkFields();
696 698
		if (pkFields != null && pkFields.length == 1) {
697 699
			sql.append(helper.escapeFieldName(pkFields[0]));
698 700
		} else {
......
703 705

  
704 706
		sql.append("from ");
705 707

  
706
		sql.append(params.tableID());
708
		sql.append(getJDBCParameters().tableID());
707 709
		sql.append(' ');
708 710

  
709 711
		appendWhere(sql, filter);
......
713 715

  
714 716
	protected void appendWhere(StringBuilder sql, String filter) {
715 717
		filter = fixFilter(filter);
716
		String initialFilter = params.getInitialFilter();
718
		String initialFilter = getJDBCParameters().getInitialFilter();
717 719
		if ((initialFilter != null && initialFilter.length() != 0)
718 720
				|| (filter != null && filter.length() != 0)) {
719 721
			sql.append("where (");
......
738 740
	}
739 741

  
740 742
	protected void loadMetadata() throws DataException {
741
		IProjection srs = params.getSRS();
743
		IProjection srs = getJDBCParameters().getSRS();
742 744

  
743 745
		if (srs == null) {
744
			srs = store.getDefaultFeatureType().getDefaultSRS();
746
			srs = getFeatureStore().getDefaultFeatureType().getDefaultSRS();
745 747
		}
746 748

  
747
		this.metadata.setDynValue("DefaultSRS", srs);
749
		this.setDynValue("DefaultSRS", srs);
748 750

  
749
		String defGeomName = this.store.getDefaultFeatureType()
751
		String defGeomName = this.getFeatureStore().getDefaultFeatureType()
750 752
				.getDefaultGeometryAttributeName();
751 753
		Envelope env = null;
752 754
		if (defGeomName != null && defGeomName.length() > 0) {
753
			env = this.helper.getFullEnvelopeOfField(this.params, defGeomName,
754
					this.params.getWorkingArea());
755
			env = this.helper.getFullEnvelopeOfField(this.getJDBCParameters(),
756
					defGeomName, this.getJDBCParameters().getWorkingArea());
755 757

  
756 758
		}
757
		this.metadata.setDynValue("Envelope", env);
759
		this.setDynValue("Envelope", env);
758 760

  
759 761
	}
760 762

  
......
769 771

  
770 772
	public Envelope getEnvelope() throws DataException {
771 773
		this.open();
772
		return (Envelope) this.metadata.getDynValue("Envelope");
774
		return (Envelope) this.getDynValue("Envelope");
773 775
	}
774 776

  
775 777
	public void resourceChanged(ResourceProvider resource) {
776
		this.store.notifyChange(DataStoreNotification.RESOURCE_CHANGED,
778
		this.getStoreServices().notifyChange(
779
				DataStoreNotification.RESOURCE_CHANGED,
777 780
				resource);
778 781
	}
779 782

  
780 783
	protected void clearMetadata() {
781
		this.metadata.setDynValue("DefaultSRS", null);
782
		this.metadata.setDynValue("Envelope", null);
784
		this.setDynValue("DefaultSRS", null);
785
		this.setDynValue("Envelope", null);
783 786
	}
784 787

  
785 788
	public boolean allowAutomaticValues() {
......
789 792
	public DataServerExplorer getExplorer() throws ReadException {
790 793
		DataManager manager = DALLocator.getDataManager();
791 794
		JDBCServerExplorerParameters exParams;
795
		JDBCStoreParameters params = getJDBCParameters();
792 796
		try {
793 797
			exParams = (JDBCServerExplorerParameters) manager
794 798
					.createServerExplorerParameters(JDBCServerExplorer.NAME);
......
818 822
		super.dispose();
819 823
	}
820 824

  
821
	public FeatureStoreProvider initialize(FeatureStoreProviderServices store)
822
			throws InitializeException {
823
		super.initialize(store);
824
		this.initFeatureType();
825
		return this;
826
	}
827

  
828 825
	public Object createNewOID() {
829 826
		return null;
830 827
	}
......
832 829
	public String compoundSelect(FeatureType type, String filter, String order,
833 830
			long limit, long offset) throws DataException {
834 831
		StringBuilder sql = new StringBuilder();
832
		JDBCStoreParameters params = getJDBCParameters();
835 833
		if (directSQLMode) {
836 834
			if (filter != null || order != null) {
837 835
				// FIXME Exception
......
852 850
			sql.append(helper.getSqlFieldName(fields[fields.length - 1]));
853 851
			sql.append(' ');
854 852

  
855
			FeatureAttributeDescriptor[] pkFields = store
853
			FeatureAttributeDescriptor[] pkFields = getStoreServices()
856 854
					.getProviderFeatureType(type.getId()).getPrimaryKey();
857 855

  
858 856
			if (pkFields != null && pkFields.length > 0) {
......
913 911
		return NAME;
914 912
	}
915 913

  
916
	public Iterator getChilds() {
917
		return null;
918
	}
919

  
920 914
	public boolean hasGeometrySupport() {
921 915
		return false;
922 916
	}
......
928 922
	}
929 923

  
930 924
	public Object getSourceId() {
931
		return this.params.getSourceId();
925
		return this.getJDBCParameters().getSourceId();
932 926
	}
933 927

  
934 928
}

Also available in: Unified diff