我正在测试开源软件Geonetwork的某些功能,现在我想将形状文件从我的postGIS数据库导出到我的计算机,但是我无法测试它,因为我总是收到findbugs警告:硬编码对组织中绝对路径的引用。 fao.geonet.services.resources.Download.exec(Element,ServiceContext)
有谁知道如何抑制或避免这种警告?或另一种解决方案,我如何测试导出是否有效?
这是代码:
` Map parameter1= new HashMap();
parameter1.put("dbtype", "postgis");
parameter1.put("host", "localhost");
parameter1.put("port", "5433");
parameter1.put("database", "geonetwork");
parameter1.put("schema", "mydata");
parameter1.put("user", "postgres");
parameter1.put("passwd", "dominik1");
parameter1.put("Expose primary keys", false);
parameter1.put(PostgisNGDataStoreFactory.VALIDATECONN, true);
parameter1.put(PostgisNGDataStoreFactory.MAX_OPEN_PREPARED_STATEMENTS, 100);
parameter1.put(PostgisNGDataStoreFactory.LOOSEBBOX, true);
parameter1.put(PostgisNGDataStoreFactory.PREPARED_STATEMENTS, true);
System.out.println("parameter1: " + parameter1);
DataStore pds = new PostgisNGDataStoreFactory().createDataStore(parameter1);
FeatureSource fs = pds.getFeatureSource("dano");
SimpleFeatureCollection fc = (SimpleFeatureCollection) fs.getFeatures();
SimpleFeature f = (SimpleFeature) fc.toArray()[0];
// create shapefile
File sfile = new File("C:/Users/Tinis/Downloads/dano.zip");
parameter1 = new HashMap();
parameter1.put("url", sfile.toURI().toURL());
parameter1.put("create spatial index", Boolean.FALSE);
DirectoryDataStore dds = new DirectoryDataStore(new File(sfile.getAbsolutePath()), (FileStoreFactory) new ShapefileDataStoreFactory.ShpFileStoreFactory(new ShapefileDataStoreFactory(), parameter1));
dds.createSchema(fc.getSchema());
String typeName = dds.getTypeNames()[0];
SimpleFeatureSource featureSource = dds.getFeatureSource(typeName);
SimpleFeatureStore featureStore = (SimpleFeatureStore) featureSource;
// write data to shapefile
Transaction t = new DefaultTransaction("addTransaction");
featureStore.setTransaction(t);
featureStore.addFeatures(fc);
t.commit();
t.close(); `
发出findbugs警告的行就在//创建shapefile注释之后
我希望有人可以帮助我解决这个问题。谢谢!
使用条目创建xxx.properties文件(ResourceBundle):
danoZip = C:/Users/Tinis/Downloads/dano.zip
并间接执行:
ResourceBundle bundle = ResourceBundle.getBundle("xxx");
String danoZipPath = bundle.getString("danoZip");
File sfile = new File(danoZipPath);
通过这种方式,您可以将硬编码文件的配置放入可配置的属性文件中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句