Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Open sidebar
monticore
EmbeddedMontiArc
generators
EMAM2Middleware
Commits
14b033cc
Commit
14b033cc
authored
Feb 01, 2019
by
Alexander David Hellwig
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add classes for cli parameters of each algorithm
parent
3349413f
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
293 additions
and
5 deletions
+293
-5
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/CliParameters.java
...lang/monticar/generator/middleware/cli/CliParameters.java
+9
-1
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/CliParametersLoader.java
...onticar/generator/middleware/cli/CliParametersLoader.java
+44
-0
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/ClustringParameters.java
...onticar/generator/middleware/cli/ClustringParameters.java
+28
-0
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/DistributedTargetGeneratorCli.java
...nerator/middleware/cli/DistributedTargetGeneratorCli.java
+1
-4
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/ResultChoosingStrategy.java
...icar/generator/middleware/cli/ResultChoosingStrategy.java
+6
-0
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/algorithms/AffinityPropagationCliParameters.java
...ware/cli/algorithms/AffinityPropagationCliParameters.java
+7
-0
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/algorithms/AlgorithmCliParameters.java
...tor/middleware/cli/algorithms/AlgorithmCliParameters.java
+16
-0
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/algorithms/DBScanCliParameters.java
...erator/middleware/cli/algorithms/DBScanCliParameters.java
+12
-0
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/algorithms/MarkovCliParameters.java
...erator/middleware/cli/algorithms/MarkovCliParameters.java
+12
-0
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/algorithms/SpectralClusteringCliParameters.java
...eware/cli/algorithms/SpectralClusteringCliParameters.java
+12
-0
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/algorithms/UnknownAlgorithmCliParameters.java
...dleware/cli/algorithms/UnknownAlgorithmCliParameters.java
+12
-0
src/test/java/de/monticore/lang/monticar/generator/middleware/ParameterLoadingTest.java
...g/monticar/generator/middleware/ParameterLoadingTest.java
+78
-0
src/test/resources/config/parameterTest/clusterParamsAllAlgos.json
...resources/config/parameterTest/clusterParamsAllAlgos.json
+22
-0
src/test/resources/config/parameterTest/clusterParamsDefaultValues.json
...rces/config/parameterTest/clusterParamsDefaultValues.json
+8
-0
src/test/resources/config/parameterTest/clusterParamsInvalidAlgos.json
...urces/config/parameterTest/clusterParamsInvalidAlgos.json
+16
-0
src/test/resources/config/parameterTest/clusterParamsNoAlgo.json
...t/resources/config/parameterTest/clusterParamsNoAlgo.json
+10
-0
No files found.
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/CliParameters.java
View file @
14b033cc
package
de.monticore.lang.monticar.generator.middleware.cli
;
import
java.util.Optional
;
import
java.util.Set
;
public
class
CliParameters
{
...
...
@@ -12,17 +13,19 @@ public class CliParameters {
private
Set
<
String
>
generators
;
private
String
emadlBackend
;
private
Boolean
writeTagFile
;
private
ClustringParameters
clustringParameters
;
public
CliParameters
()
{
}
public
CliParameters
(
String
modelsDir
,
String
outputDir
,
String
rootModel
,
Set
<
String
>
generators
,
String
emadlBackend
,
Boolean
writeTagFile
)
{
public
CliParameters
(
String
modelsDir
,
String
outputDir
,
String
rootModel
,
Set
<
String
>
generators
,
String
emadlBackend
,
Boolean
writeTagFile
,
ClustringParameters
clustringParameters
)
{
this
.
modelsDir
=
modelsDir
;
this
.
outputDir
=
outputDir
;
this
.
rootModel
=
rootModel
;
this
.
generators
=
generators
;
this
.
emadlBackend
=
emadlBackend
==
null
?
DEFAULT_EMADL_BACKEND
:
emadlBackend
;
this
.
writeTagFile
=
writeTagFile
==
null
?
DEFAULT_WRITE_TAG_FILE
:
writeTagFile
;
this
.
clustringParameters
=
clustringParameters
;
}
public
String
getModelsDir
()
{
...
...
@@ -48,4 +51,9 @@ public class CliParameters {
public
boolean
getWriteTagFile
()
{
return
writeTagFile
;
}
public
Optional
<
ClustringParameters
>
getClustringParameters
()
{
return
Optional
.
ofNullable
(
clustringParameters
);
}
}
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/CliParametersLoader.java
0 → 100644
View file @
14b033cc
package
de.monticore.lang.monticar.generator.middleware.cli
;
import
com.google.gson.*
;
import
com.google.gson.stream.JsonReader
;
import
de.monticore.lang.monticar.generator.middleware.cli.algorithms.*
;
import
java.io.FileNotFoundException
;
import
java.io.FileReader
;
import
java.lang.reflect.Type
;
public
class
CliParametersLoader
{
private
CliParametersLoader
()
{
}
public
static
CliParameters
loadCliParameters
(
String
filePath
)
throws
FileNotFoundException
{
JsonReader
jsonReader
=
new
JsonReader
(
new
FileReader
(
filePath
));
Gson
gson
=
new
GsonBuilder
().
registerTypeAdapter
(
AlgorithmCliParameters
.
class
,
new
AlgorithmParametersInterfaceAdapter
()).
create
();
return
gson
.
fromJson
(
jsonReader
,
CliParameters
.
class
);
}
static
final
class
AlgorithmParametersInterfaceAdapter
implements
JsonSerializer
<
AlgorithmCliParameters
>,
JsonDeserializer
<
AlgorithmCliParameters
>
{
public
JsonElement
serialize
(
AlgorithmCliParameters
object
,
Type
interfaceType
,
JsonSerializationContext
context
)
{
return
context
.
serialize
(
object
);
}
public
AlgorithmCliParameters
deserialize
(
JsonElement
elem
,
Type
interfaceType
,
JsonDeserializationContext
context
)
throws
JsonParseException
{
final
Type
actualType
=
typeForName
(((
JsonObject
)
elem
).
get
(
"name"
));
return
context
.
deserialize
(
elem
,
actualType
);
}
private
Type
typeForName
(
final
JsonElement
typeElem
){
String
algoName
=
typeElem
.
getAsString
().
toLowerCase
();
switch
(
algoName
){
case
"spectralclustering"
:
return
SpectralClusteringCliParameters
.
class
;
case
"dbscan"
:
return
DBScanCliParameters
.
class
;
case
"affinitypropagation"
:
return
AffinityPropagationCliParameters
.
class
;
case
"markov"
:
return
MarkovCliParameters
.
class
;
default
:
return
UnknownAlgorithmCliParameters
.
class
;
}
}
}
}
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/ClustringParameters.java
0 → 100644
View file @
14b033cc
package
de.monticore.lang.monticar.generator.middleware.cli
;
import
de.monticore.lang.monticar.generator.middleware.cli.algorithms.AlgorithmCliParameters
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Optional
;
public
class
ClustringParameters
{
private
Integer
numberOfClusters
;
private
ResultChoosingStrategy
chooseBy
=
ResultChoosingStrategy
.
bestWithFittingN
;
private
List
<
AlgorithmCliParameters
>
algorithmParameters
=
new
ArrayList
<>();
public
ClustringParameters
()
{
}
public
Optional
<
Integer
>
getNumberOfClusters
()
{
return
Optional
.
ofNullable
(
numberOfClusters
);
}
public
ResultChoosingStrategy
getChooseBy
()
{
return
chooseBy
;
}
public
List
<
AlgorithmCliParameters
>
getAlgorithmParameters
()
{
return
algorithmParameters
;
}
}
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/DistributedTargetGeneratorCli.java
View file @
14b033cc
package
de.monticore.lang.monticar.generator.middleware.cli
;
import
com.google.gson.Gson
;
import
com.google.gson.stream.JsonReader
;
import
de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.instanceStructure.EMAComponentInstanceSymbol
;
import
de.monticore.lang.embeddedmontiarc.tagging.middleware.ros.RosToEmamTagSchema
;
import
de.monticore.lang.monticar.emadl.generator.EMADLAbstractSymtab
;
...
...
@@ -16,7 +15,6 @@ import de.monticore.lang.tagging._symboltable.TaggingResolver;
import
de.se_rwth.commons.logging.Log
;
import
java.io.FileNotFoundException
;
import
java.io.FileReader
;
import
java.io.IOException
;
import
java.nio.file.Files
;
import
java.nio.file.Paths
;
...
...
@@ -59,8 +57,7 @@ public final class DistributedTargetGeneratorCli {
String
filePath
=
expandHomeDir
(
args
[
0
]);
try
{
JsonReader
jsonReader
=
new
JsonReader
(
new
FileReader
(
filePath
));
parameters
=
gson
.
fromJson
(
jsonReader
,
CliParameters
.
class
);
parameters
=
CliParametersLoader
.
loadCliParameters
(
filePath
);
}
catch
(
FileNotFoundException
e
)
{
Log
.
error
(
"0x49E6A: Can not find specified config file: "
+
args
[
0
]
+
"!"
);
}
...
...
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/ResultChoosingStrategy.java
0 → 100644
View file @
14b033cc
package
de.monticore.lang.monticar.generator.middleware.cli
;
public
enum
ResultChoosingStrategy
{
bestWithFittingN
,
bestOverall
;
}
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/algorithms/AffinityPropagationCliParameters.java
0 → 100644
View file @
14b033cc
package
de.monticore.lang.monticar.generator.middleware.cli.algorithms
;
public
class
AffinityPropagationCliParameters
extends
AlgorithmCliParameters
{
public
AffinityPropagationCliParameters
()
{
}
}
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/algorithms/AlgorithmCliParameters.java
0 → 100644
View file @
14b033cc
package
de.monticore.lang.monticar.generator.middleware.cli.algorithms
;
public
class
AlgorithmCliParameters
{
public
static
final
String
TYPE_SPECTRAL_CLUSTERING
=
"SpectralClustering"
;
public
static
final
String
TYPE_UNKOWN
=
"Unkown"
;
public
static
final
String
TYPE_DBSCAN
=
"DBScan"
;
public
static
final
String
TYPE_MARKOV
=
"Markov"
;
protected
String
name
;
public
AlgorithmCliParameters
()
{
}
public
String
getName
()
{
return
name
;
}
}
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/algorithms/DBScanCliParameters.java
0 → 100644
View file @
14b033cc
package
de.monticore.lang.monticar.generator.middleware.cli.algorithms
;
public
class
DBScanCliParameters
extends
AlgorithmCliParameters
{
public
DBScanCliParameters
()
{
}
@Override
public
String
getName
()
{
return
TYPE_DBSCAN
;
}
}
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/algorithms/MarkovCliParameters.java
0 → 100644
View file @
14b033cc
package
de.monticore.lang.monticar.generator.middleware.cli.algorithms
;
public
class
MarkovCliParameters
extends
AlgorithmCliParameters
{
public
MarkovCliParameters
()
{
}
@Override
public
String
getName
()
{
return
TYPE_MARKOV
;
}
}
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/algorithms/SpectralClusteringCliParameters.java
0 → 100644
View file @
14b033cc
package
de.monticore.lang.monticar.generator.middleware.cli.algorithms
;
public
class
SpectralClusteringCliParameters
extends
AlgorithmCliParameters
{
public
SpectralClusteringCliParameters
()
{
}
@Override
public
String
getName
()
{
return
TYPE_SPECTRAL_CLUSTERING
;
}
}
src/main/java/de/monticore/lang/monticar/generator/middleware/cli/algorithms/UnknownAlgorithmCliParameters.java
0 → 100644
View file @
14b033cc
package
de.monticore.lang.monticar.generator.middleware.cli.algorithms
;
public
class
UnknownAlgorithmCliParameters
extends
AlgorithmCliParameters
{
public
UnknownAlgorithmCliParameters
()
{
}
@Override
public
String
getName
()
{
return
TYPE_UNKOWN
;
}
}
src/test/java/de/monticore/lang/monticar/generator/middleware/ParameterLoadingTest.java
0 → 100644
View file @
14b033cc
package
de.monticore.lang.monticar.generator.middleware
;
import
de.monticore.lang.monticar.generator.middleware.cli.CliParametersLoader
;
import
de.monticore.lang.monticar.generator.middleware.cli.CliParameters
;
import
de.monticore.lang.monticar.generator.middleware.cli.ClustringParameters
;
import
de.monticore.lang.monticar.generator.middleware.cli.ResultChoosingStrategy
;
import
de.monticore.lang.monticar.generator.middleware.cli.algorithms.*
;
import
org.junit.Test
;
import
java.io.FileNotFoundException
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertFalse
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
public
class
ParameterLoadingTest
{
private
static
String
BASE_DIR
=
"src/test/resources/config/parameterTest/"
;
private
CliParameters
loadCliParameters
(
String
fileName
)
throws
FileNotFoundException
{
return
CliParametersLoader
.
loadCliParameters
(
BASE_DIR
+
fileName
+
".json"
);
}
@Test
public
void
testClusterParamsDefaultValues
()
throws
FileNotFoundException
{
CliParameters
params
=
loadCliParameters
(
"clusterParamsDefaultValues"
);
ClustringParameters
clustringParameters
=
params
.
getClustringParameters
().
get
();
assertFalse
(
clustringParameters
.
getNumberOfClusters
().
isPresent
());
assertEquals
(
ResultChoosingStrategy
.
bestWithFittingN
,
clustringParameters
.
getChooseBy
());
assertTrue
(
clustringParameters
.
getAlgorithmParameters
().
isEmpty
());
}
@Test
public
void
testClusterParamsNoAlgo
()
throws
FileNotFoundException
{
CliParameters
params
=
loadCliParameters
(
"clusterParamsNoAlgo"
);
ClustringParameters
clustringParameters
=
params
.
getClustringParameters
().
get
();
assertEquals
(
3
,
(
long
)
clustringParameters
.
getNumberOfClusters
().
get
());
assertEquals
(
ResultChoosingStrategy
.
bestOverall
,
clustringParameters
.
getChooseBy
());
assertTrue
(
clustringParameters
.
getAlgorithmParameters
().
isEmpty
());
}
@Test
public
void
testClusterParamsAllAlgos
()
throws
FileNotFoundException
{
CliParameters
params
=
loadCliParameters
(
"clusterParamsAllAlgos"
);
ClustringParameters
clustringParameters
=
params
.
getClustringParameters
().
get
();
List
<
AlgorithmCliParameters
>
algorithmParameters
=
clustringParameters
.
getAlgorithmParameters
();
assertEquals
(
4
,
algorithmParameters
.
size
());
Map
<
String
,
AlgorithmCliParameters
>
nameToParams
=
new
HashMap
<>();
algorithmParameters
.
forEach
(
p
->
nameToParams
.
put
(
p
.
getName
(),
p
));
assertTrue
(
nameToParams
.
get
(
"SpectralClustering"
)
instanceof
SpectralClusteringCliParameters
);
assertTrue
(
nameToParams
.
get
(
"DBScan"
)
instanceof
DBScanCliParameters
);
assertTrue
(
nameToParams
.
get
(
"Markov"
)
instanceof
MarkovCliParameters
);
assertTrue
(
nameToParams
.
get
(
"AffinityPropagation"
)
instanceof
AffinityPropagationCliParameters
);
}
@Test
public
void
testClusterParamsInvalidAlgos
()
throws
FileNotFoundException
{
CliParameters
params
=
loadCliParameters
(
"clusterParamsInvalidAlgos"
);
ClustringParameters
clustringParameters
=
params
.
getClustringParameters
().
get
();
List
<
AlgorithmCliParameters
>
algorithmParameters
=
clustringParameters
.
getAlgorithmParameters
();
assertEquals
(
2
,
algorithmParameters
.
size
());
assertTrue
(
algorithmParameters
.
get
(
0
)
instanceof
UnknownAlgorithmCliParameters
);
assertTrue
(
algorithmParameters
.
get
(
1
)
instanceof
UnknownAlgorithmCliParameters
);
}
}
src/test/resources/config/parameterTest/clusterParamsAllAlgos.json
0 → 100644
View file @
14b033cc
{
"modelsDir"
:
"src/test/resources/"
,
"outputDir"
:
"target/cliTest/validConfigFile"
,
"rootModel"
:
"tests.a.addComp"
,
"generators"
:
[
"cpp"
,
"roscpp"
],
"clustringParameters"
:{
"algorithmParameters"
:[
{
"name"
:
"SpectralClustering"
},
{
"name"
:
"DBScan"
},
{
"name"
:
"Markov"
},
{
"name"
:
"AffinityPropagation"
}
]
}
}
\ No newline at end of file
src/test/resources/config/parameterTest/clusterParamsDefaultValues.json
0 → 100644
View file @
14b033cc
{
"modelsDir"
:
"src/test/resources/"
,
"outputDir"
:
"target/cliTest/validConfigFile"
,
"rootModel"
:
"tests.a.addComp"
,
"generators"
:
[
"cpp"
,
"roscpp"
],
"clustringParameters"
:{
}
}
\ No newline at end of file
src/test/resources/config/parameterTest/clusterParamsInvalidAlgos.json
0 → 100644
View file @
14b033cc
{
"modelsDir"
:
"src/test/resources/"
,
"outputDir"
:
"target/cliTest/validConfigFile"
,
"rootModel"
:
"tests.a.addComp"
,
"generators"
:
[
"cpp"
,
"roscpp"
],
"clustringParameters"
:{
"algorithmParameters"
:[
{
"name"
:
"Invalid"
},
{
"name"
:
"Unknown"
}
]
}
}
\ No newline at end of file
src/test/resources/config/parameterTest/clusterParamsNoAlgo.json
0 → 100644
View file @
14b033cc
{
"modelsDir"
:
"src/test/resources/"
,
"outputDir"
:
"target/cliTest/validConfigFile"
,
"rootModel"
:
"tests.a.addComp"
,
"generators"
:
[
"cpp"
,
"roscpp"
],
"clustringParameters"
:{
"numberOfClusters"
:
3
,
"chooseBy"
:
"bestOverall"
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment