Patrick Giersch Patrick Giersch - 10 months ago 183
Java Question

How to suppress FindBugs warning (hard coded reference to an absolute pathname)?

i am just testing some things for the opensource software Geonetwork and now I want to export a shape file from my postGIS database to my computer but I cant test it cause I always get a findbugs warning :
Hard coded reference to an absolute pathname in, ServiceContext)

Does anyone know how to suppress or to avoid this warning? Or another solution how I can test if the export works?

Here is the Code:

` 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/");
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));

String typeName = dds.getTypeNames()[0];
SimpleFeatureSource featureSource = dds.getFeatureSource(typeName);
SimpleFeatureStore featureStore = (SimpleFeatureStore) featureSource;

// write data to shapefile
Transaction t = new DefaultTransaction("addTransaction");
t.close(); `

The line which gives the findbugs warning is just after the // create shapefile comment

I hope someone can help me with this problem.
Thank you!

Answer Source

Make a file (ResourceBundle) with an entry:

danoZip = C:/Users/Tinis/Downloads/

And do it indirect:

ResourceBundle bundle = ResourceBundle.getBundle("xxx");

String danoZipPath = bundle.getString("danoZip");

File sfile = new File(danoZipPath);            

In this way you put the configuration of a hard-coded file in a configurable properties file.