Skip to content

Commit

Permalink
Merge branch 'master' into stable
Browse files Browse the repository at this point in the history
  • Loading branch information
claeis committed Aug 26, 2024
2 parents 58fc980 + f7bb6da commit 45895d2
Show file tree
Hide file tree
Showing 10 changed files with 176 additions and 6 deletions.
3 changes: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ before_script:
- # virtualenv my_py3 --python=/usr/bin/python3
- virtualenv -p python3 my_py3
- source my_py3/bin/activate # to activate the python3 environemt
- python -m pip install docutils # use my_py3
- python -m pip --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org install docutils
- python -m pip --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org install Pygments
- python -m pip freeze
-
script:
Expand Down
8 changes: 4 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
group 'ch.interlis'
version '5.1.0'+System.getProperty('release','-SNAPSHOT')
version '5.1.1'+System.getProperty('release','-SNAPSHOT')

apply plugin: "java"
apply plugin: "maven"
Expand Down Expand Up @@ -323,9 +323,9 @@ configurations {
ftpAntTask
}
dependencies {
implementation group: 'ch.interlis', name: 'iox-ili', version: '1.22.0'
implementation group: 'ch.interlis', name: 'ili2c-tool', version: "5.4.0"
implementation group: 'ch.interlis', name: 'ili2c-core', version: "5.4.0"
implementation group: 'ch.interlis', name: 'iox-ili', version: '1.23.1'
implementation group: 'ch.interlis', name: 'ili2c-tool', version: "5.5.4"
implementation group: 'ch.interlis', name: 'ili2c-core', version: "5.5.4"
implementation group: 'ch.ehi', name: 'ehisqlgen', version: "1.16.0"
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.9.7'
implementation group: 'net.iharder', name: 'base64', version: '2.3.9'
Expand Down
7 changes: 7 additions & 0 deletions docs/CHANGELOG.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@ ideas/open issues/questions
- einfache Liste mit den neu erzeugten Vertexpunkte (aufgrund der Overlap-Bereinigung)
- Schalter f�r das "disablen" der Overlaps-Bereinigung. Bei vorhandenen gueltigen Overlaps erfolgen: a) Import mit NULL als Polygon, ohne Fehlermeldung, b) Import mit NULL als Polygon, mit Warning, c) kein Import, Fehlermeldung

ili2db 5.1.1 (2024-08-26)
---------------------------
- fix --gpkgMultiGeomPerTable needed on export/import/validate (#542)
- Add --plugins option (#235)
- ili2c-5.5.4
- iox-ili-1.23.1

ili2db 5.1.0 (2023-12-06)
---------------------------
- JSON-Mapping of Bag of Structure (#477)
Expand Down
2 changes: 2 additions & 0 deletions docs/ili2db.rst
Original file line number Diff line number Diff line change
Expand Up @@ -865,6 +865,8 @@ Optionen:
+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| --createTypeConstraint | Erstellt für die t\_type Spalte ein CHECK-Constraint in der Datenbank. |
+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| --plugins folder | Verzeichnis mit JAR-Dateien, die Zusatzfunktionen enthalten. Die Zusatzfunktionen müssen das Java-Interface ``ch.interlis.iox_j.validator.InterlisFunction`` implementieren, und der Name der Java-Klasse muss mit ``IoxPlugin`` enden. |
+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| --sqlColsAsText | Bildet alle (einfachen/unstrukturierten) Interlis-Attribute als TEXT-Spalten ab, so dass fehlerhafte Daten importiert werden können. |
+-------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| --createImportTabs | Erstellt die t\_ili2db\_import Tabellen in der Datenbank. |
Expand Down
5 changes: 5 additions & 0 deletions src/ch/ehi/ili2db/AbstractMain.java
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,10 @@ public void domain(String args[]){
} else if (arg.equals("--verbose")) {
argi++;
config.setVerbose(parseBooleanArgument(arg));
}else if(arg.equals("--plugins")) {
argi++;
config.setPluginsFolder(args[argi]);
argi++;
} else if (arg.equals("--help")) {
printVersion();
System.err.println();
Expand Down Expand Up @@ -589,6 +593,7 @@ public void domain(String args[]){
System.err.println("--createMetaInfo Create aditional ili-model information.");
System.err.println("--iliMetaAttrs file Import meta-attributes from a .toml file (Requires --createMetaInfo)");
System.err.println("--createTypeConstraints Create CHECK constraint on t_type columns.");
System.err.println("--plugins folder directory with jar files that contain user defined functions.");
printSpecificOptions();
System.err.println("--proxy host proxy server to access model repositories.");
System.err.println("--proxyPort port proxy port to access model repositories.");
Expand Down
12 changes: 11 additions & 1 deletion src/ch/ehi/ili2db/gui/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ public class Config extends Settings {
public static final String IMPORT_TABS_CREATE="simple";
public static final String GEOMATTR_PER_TABLE=PREFIX+".geomAttrPerTable";
public static final String GEOMATTR_PER_TABLE_ONE="oneGeomAttrPerTable";
public static final String GEOMATTR_PER_TABLE_MULTIPLE="multipleGeomAttrPerTable";
private static final String NAME_OPTIMIZATION=PREFIX+".nameOptimization";
public static final String NAME_OPTIMIZATION_DISABLE="disable";
public static final String NAME_OPTIMIZATION_TOPIC="topic";
Expand Down Expand Up @@ -175,6 +176,7 @@ public class Config extends Settings {
public static final String TRANSIENT_LONG_MINIDSEQVALUE=PREFIX+".minIdSeqValue";
public static final String TRANSIENT_LONG_MAXIDSEQVALUE=PREFIX+".maxIdSeqValue";
public static final String TRANSIENT_PROPERTIES_DBPROPS=PREFIX+".dbprops";
public static final String TRANSIENT_STRING_PLUGINFOLDER=PREFIX+".pluginfolder";

final static public String ILIGML20="ILIGML20";

Expand Down Expand Up @@ -575,7 +577,7 @@ public boolean isCreateImportTabs() {
}

public void setOneGeomPerTable(boolean onlyOne) {
setValue(GEOMATTR_PER_TABLE,onlyOne?GEOMATTR_PER_TABLE_ONE:null);
setValue(GEOMATTR_PER_TABLE,onlyOne?GEOMATTR_PER_TABLE_ONE:GEOMATTR_PER_TABLE_MULTIPLE);
}
public boolean isOneGeomPerTable() {
return GEOMATTR_PER_TABLE_ONE.equals(getValue(GEOMATTR_PER_TABLE));
Expand Down Expand Up @@ -915,4 +917,12 @@ public void setVerbose(boolean value) {
public boolean isVerbose() {
return ValidationConfig.TRUE.equals(getTransientValue(Validator.CONFIG_VERBOSE));
}

public String getPluginsFolder() {
return getTransientValue(TRANSIENT_STRING_PLUGINFOLDER);
}

public void setPluginsFolder(String path) {
setTransientValue(TRANSIENT_STRING_PLUGINFOLDER, path);
}
}
21 changes: 21 additions & 0 deletions src/ch/ehi/ili2db/toxtf/TransferToXtf.java
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,9 @@
import ch.interlis.iox_j.filter.Rounder;
import ch.interlis.iox_j.filter.TranslateToTranslation;
import ch.interlis.iox_j.logging.LogEventFactory;
import ch.interlis.iox_j.plugins.PluginLoader;
import ch.interlis.iox_j.validator.ValidationConfig;
import ch.interlis.iox_j.validator.Validator;


/**
Expand Down Expand Up @@ -222,6 +224,7 @@ public void doit(int function,String datasource,IoxWriter iomFile,String sender,
}
}
PipelinePool pipelinePool=new PipelinePool();
AddFunctionsFromPluginFolder(config, config.getPluginsFolder());
validator=new ch.interlis.iox_j.validator.Validator(td,modelConfig, errHandler, errFactory, pipelinePool,config);

}
Expand Down Expand Up @@ -1695,4 +1698,22 @@ private void saveObjStat(String iliBasketId,Long basketSqlId,String datasource,S
objStat=new HashMap<String, ClassStat>();
}

/**
* Append the custom functions the {@link PluginLoader} finds to the {@value ch.interlis.iox_j.validator.Validator#CONFIG_CUSTOM_FUNCTIONS} config.
*/
private static void AddFunctionsFromPluginFolder(Config config, String pluginFolder) {
PluginLoader loader = new PluginLoader();
loader.loadPlugins();
if (pluginFolder != null) {
EhiLogger.logState("pluginFolder <" + pluginFolder + ">");
loader.loadPlugins(new File(pluginFolder));
}
Map<String, Class> userFunctions = new HashMap<>(PluginLoader.getInterlisFunctions(loader.getAllPlugins()));
Map<String, Class> definedFunctions = (Map<String, Class>) config.getTransientObject(Validator.CONFIG_CUSTOM_FUNCTIONS);
if (definedFunctions != null) {
userFunctions.putAll(definedFunctions);
}

config.setTransientObject(Validator.CONFIG_CUSTOM_FUNCTIONS, userFunctions);
}
}
26 changes: 26 additions & 0 deletions test/data/Simple/SimpleCoord10.ili
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
TRANSFER SimpleCoord10Test;

MODEL SimpleCoord10

DOMAIN

Coord2 = COORD2
2460000.000 1045000.000
2870000.000 1310000.000;

TOPIC TestA =

TABLE ClassA1 =
attr1 : OPTIONAL TEXT*10;
attr2 : OPTIONAL Coord2;
NO IDENT
END ClassA1;

END TestA.

END SimpleCoord10.

FORMAT FREE;
CODE BLANK = DEFAULT, UNDEFINED = DEFAULT, CONTINUE = DEFAULT;
TID = ANY;
END.
13 changes: 13 additions & 0 deletions test/data/Simple/SimpleCoord10a.itf
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@

SCNT
Beispiel Transfer-File
////
MTID SimpleCoord10
MODL SimpleCoord10
TOPI TestA
TABL ClassA1
OBJE 55 @ 2460000.001 1045000.001
ETAB
ETOP
EMOD
ENDE
85 changes: 85 additions & 0 deletions test/java/ch/ehi/ili2db/SimpleTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,18 @@
import ch.ehi.ili2db.base.Ili2db;
import ch.ehi.ili2db.gui.Config;
import ch.ehi.sqlgen.DbUtility;
import ch.interlis.ili2c.metamodel.TransferDescription;
import ch.interlis.iom.IomObject;
import ch.interlis.iom_j.itf.ItfReader2;
import ch.interlis.iom_j.xtf.XtfReader;
import ch.interlis.iox.EndBasketEvent;
import ch.interlis.iox.EndTransferEvent;
import ch.interlis.iox.IoxEvent;
import ch.interlis.iox.IoxReader;
import ch.interlis.iox.ObjectEvent;
import ch.interlis.iox.StartBasketEvent;
import ch.interlis.iox.StartTransferEvent;
import ch.interlis.iox_j.IoxIliReader;

public abstract class SimpleTest {

Expand Down Expand Up @@ -139,6 +143,23 @@ public void importIliCoord() throws Exception
Ili2db.run(config,null);
validateImportIliCoord();
}
@Test
public void importIli10Coord() throws Exception
{
setup.resetDb();
File data=new File(TEST_OUT,"SimpleCoord10.ili");
Config config=setup.initConfig(data.getPath(),data.getPath()+".log");
Ili2db.setNoSmartMapping(config);
config.setFunction(Config.FC_SCHEMAIMPORT);
config.setCreateFk(Config.CREATE_FK_YES);
config.setCreateNumChecks(true);
config.setTidHandling(Config.TID_HANDLING_PROPERTY);
config.setBasketHandling(Config.BASKET_HANDLING_READWRITE);
config.setDefaultSrsCode("2056");
setup.setXYParams(config);
Ili2db.run(config,null);
validateImportIliCoord();
}

protected void validateImportIliCoord() throws Exception {

Expand Down Expand Up @@ -357,6 +378,26 @@ public void importXtfCoord() throws Exception
Ili2db.run(config,null);
validateImportIliCoord();
}
@Test
public void importItfCoord() throws Exception
{
//EhiLogger.getInstance().setTraceFilter(false);
setup.resetDb();
File data=new File(TEST_OUT,"SimpleCoord10a.itf");
Config config=setup.initConfig(data.getPath(),data.getPath()+".log");
Ili2db.setNoSmartMapping(config);
config.setFunction(Config.FC_IMPORT);
config.setDoImplicitSchemaImport(true);
config.setCreateFk(Config.CREATE_FK_YES);
config.setCreateNumChecks(true);
config.setTidHandling(Config.TID_HANDLING_PROPERTY);
config.setImportTid(true);
config.setBasketHandling(Config.BASKET_HANDLING_READWRITE);
config.setDefaultSrsCode("2056");
setup.setXYParams(config);
Ili2db.run(config,null);
validateImportIliCoord();
}

@Test
public void importXtfWithDelete() throws Exception
Expand Down Expand Up @@ -635,4 +676,48 @@ public void exportXtfCoord() throws Exception
assertTrue(reader.read() instanceof EndTransferEvent);
}
}
@Test
public void exportItfCoord() throws Exception
{
{
importItfCoord();
}
//EhiLogger.getInstance().setTraceFilter(false);
File data=new File(TEST_OUT,"SimpleCoord10a-out.itf");
Config config=setup.initConfig(data.getPath(),data.getPath()+".log");
config.setFunction(Config.FC_EXPORT);
config.setExportTid(true);
config.setModels("SimpleCoord10");
Ili2db.readSettingsFromDb(config);
Ili2db.run(config,null);
{
TransferDescription td=null;
ch.interlis.ili2c.config.Configuration ili2cConfig=new ch.interlis.ili2c.config.Configuration();
ili2cConfig.addFileEntry(new ch.interlis.ili2c.config.FileEntry(TEST_OUT+"SimpleCoord10.ili",ch.interlis.ili2c.config.FileEntryKind.ILIMODELFILE));
td=ch.interlis.ili2c.Main.runCompiler(ili2cConfig);
assertNotNull(td);
IoxReader reader=new ItfReader2(data,true);
((IoxIliReader) reader).setModel(td);
assertTrue(reader.read() instanceof StartTransferEvent);
assertTrue(reader.read() instanceof StartBasketEvent);
IoxEvent event=reader.read();
assertTrue(event instanceof ObjectEvent);
IomObject iomObj=((ObjectEvent)event).getIomObject();
{
String oid=iomObj.getobjectoid();
assertEquals("55", oid);
String attrtag=iomObj.getobjecttag();
assertEquals("SimpleCoord10.TestA.ClassA1", attrtag);
{
{
IomObject coord=iomObj.getattrobj("attr2", 0);
assertEquals("2460000.001",coord.getattrvalue("C1"));
assertEquals("1045000.001",coord.getattrvalue("C2"));
}
}
}
assertTrue(reader.read() instanceof EndBasketEvent);
assertTrue(reader.read() instanceof EndTransferEvent);
}
}
}

0 comments on commit 45895d2

Please sign in to comment.