Revision 2886 trunk/extensions/extCatalogYNomenclator/src/es/gva/cit/gvsig/catalogClient/loaders/PostgisLoader.java

View differences:

PostgisLoader.java
44 44
import java.sql.DriverManager;
45 45
import java.sql.SQLException;
46 46
import java.util.StringTokenizer;
47
import java.util.TreeMap;
47 48

  
48 49
import com.hardcode.driverManager.DriverLoadException;
49 50
import com.iver.cit.gvsig.fmap.drivers.DefaultDBDriver;
50 51
import com.iver.cit.gvsig.fmap.drivers.VectorialJDBCDriver;
52
import com.iver.cit.gvsig.fmap.drivers.jdbc.postgis.PostGisDriver;
51 53
import com.iver.cit.gvsig.fmap.layers.FLayer;
52 54
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
53 55

  
......
84 86
        } catch (DriverLoadException e) {
85 87
            // TODO Auto-generated catch block
86 88
            e.printStackTrace();
87
        } catch (InstantiationException e) {
88
            // TODO Auto-generated catch block
89
            e.printStackTrace();
90
        } catch (IllegalAccessException e) {
91
            // TODO Auto-generated catch block
92
            e.printStackTrace();
93 89
        } catch (ClassNotFoundException e) {
94 90
            // TODO Auto-generated catch block
95 91
            e.printStackTrace();
......
108 104
     * @throws SQLException
109 105
     * @throws DriverLoadException
110 106
     * @throws ClassNotFoundException
111
     * @throws IllegalAccessException
112
     * @throws InstantiationException
113 107
   	 */
114
    private FLayer createPostgisLayer(String jdbcUrl, String sLayer) throws SQLException, DriverLoadException, InstantiationException, IllegalAccessException, ClassNotFoundException  {
108
    private FLayer createPostgisLayer(String jdbcUrl, String table) throws SQLException, DriverLoadException, ClassNotFoundException  {
115 109
        //jdbc:postgresql://sercartlin/carto_300k?user=gis&password=gis     
110
        //NAME=Comunicaciones&TABLENAME=comunic_lin_300k&ID=6&FIELDS=entity,layer,codigo,tipo,gid&GEOMFIELD=the_geom
116 111
        StringTokenizer sti = new StringTokenizer(jdbcUrl,"?");
117 112
        String dbURL = sti.nextToken();
118 113
        
119
        sti = new StringTokenizer(sti.nextToken(),"&");
120
        String user = sti.nextToken();
121
		String pwd = sti.nextToken();
114
        String p = sti.nextToken();
115
               
116
        TreeMap credentials = separateParams(p);
117
		String user = (String) credentials.get((String) "USER");
118
		String pwd = (String) credentials.get((String) "PASSWORD");
122 119
		
123
		dbURL = "jdbc:postgresql://sercartlin/carto_300k";
124
		user = "gis";
125
		pwd = "gis";
126
		
127
		String layerName = "the_geom";
128
		int fidField = 0;
129
		String fields = "gid,entity,layer,codigo,tipo,the_geom";
130
		String tableName = "comunic_lin_300k";
120
		TreeMap params = separateParams(table);
121
		String layerName = (String) params.get((String) "NAME");
122
		int fidField = Integer.valueOf((String) params.get((String) "ID")).intValue();
123
		String fields = getFieldsClause((String) params.get((String) "FIELDS"),
124
		        (String) params.get((String) "GEOMFIELD"));
125
		String tableName = (String) params.get((String) "TABLENAME");
131 126
		String whereClause = "";
132
    		
133
		
127
			
128
				
134 129
		 Connection conn = DriverManager.getConnection(dbURL, user, pwd);
135 130
         conn.setAutoCommit(false);
136 131

  
137
         VectorialJDBCDriver driver = (VectorialJDBCDriver) Class.forName("org.postgresql.Driver").newInstance();
138
         if (driver instanceof DefaultDBDriver)
139
         {
140
             DefaultDBDriver dbDriver = (DefaultDBDriver) driver;
141
             dbDriver.setData(conn, tableName, fields, whereClause, fidField);
142
             //if (dbLayerDefinition.getWorkingArea() != null){
143
               //  driver.setWorkingArea(dbLayerDefinition.getWorkingArea());
144
             //}
145
         }
146
         
147
         return LayerFactory.createDBLayer(driver, layerName, null);
148
    	
149
    	   
132
         PostGisDriver pgd = new PostGisDriver();
133
         pgd.setData(conn, tableName, fields, whereClause, fidField);
134
                 
135
         return LayerFactory.createDBLayer(pgd, layerName, null);
136
   }
137
    
138
    private String getFieldsClause(String fields,String geomField){
139
        return "ASBINARY(" + geomField + ", 'XDR')," + fields;
150 140
    }
141
    
142
    private TreeMap separateParams(String pairValues){
143
        TreeMap map = new TreeMap(); 
144
		String[] params = pairValues.split("&");
145
		for (int i = 0; i < params.length; i++) {
146
			String[] nameValue = params[i].split("=");
147
			map.put(nameValue[0].toUpperCase(), nameValue[1]);
148
		}
149
		return map;
150
    }
151 151
}

Also available in: Unified diff