package com.opendoorlogistics.core.scripts.formulae.tables; import java.io.File; import com.opendoorlogistics.api.tables.ODLColumnType; import com.opendoorlogistics.api.tables.ODLDatastore; import com.opendoorlogistics.api.tables.ODLTable; import com.opendoorlogistics.api.tables.ODLTableAlterable; import com.opendoorlogistics.api.tables.TableFlags; import com.opendoorlogistics.core.formulae.Function; import com.opendoorlogistics.core.formulae.FunctionImpl; import com.opendoorlogistics.core.formulae.FunctionParameters; import com.opendoorlogistics.core.formulae.Functions; import com.opendoorlogistics.core.geometry.Spatial; import com.opendoorlogistics.core.tables.ColumnValueProcessor; import com.opendoorlogistics.core.tables.utils.TableUtils; public class Shapefile extends FunctionImpl implements TableFormula{ public Shapefile(Function filename) { super(filename); } @Override public Object execute(FunctionParameters parameters) { Object filename = child(0).execute(parameters); if(filename == Functions.EXECUTION_ERROR){ return Functions.EXECUTION_ERROR; } String s = (String) ColumnValueProcessor.convertToMe(ODLColumnType.STRING, filename); if(s==null){ return null; } ODLDatastore<? extends ODLTableAlterable> ds= Spatial.importAndCacheShapefile(new File(s)); if(ds!=null && ds.getTableCount()>0){ // remove edit permission flags TableUtils.removeAllUIEditFlags(ds); return ds.getTableAt(0); } return null; } @Override public Function deepCopy() { return new Shapefile(child(0).deepCopy()); } }