summaryrefslogtreecommitdiffstats
path: root/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration
diff options
context:
space:
mode:
Diffstat (limited to 'core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration')
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/Filter.java28
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterException.java14
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterFunction.java12
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterGeneric.java9
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterManager.java80
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterSpecific.java18
6 files changed, 161 insertions, 0 deletions
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/Filter.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/Filter.java
new file mode 100644
index 00000000..3fb594a2
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/Filter.java
@@ -0,0 +1,28 @@
+package org.openslx.runvirt.configuration;
+
+public abstract class Filter<T, R> implements FilterFunction<T, R>
+{
+ private final String name;
+ private boolean enabled;
+
+ public Filter( String name )
+ {
+ this.name = name;
+ this.setEnabled( true );
+ }
+
+ public String getName()
+ {
+ return this.name;
+ }
+
+ public boolean isEnabled()
+ {
+ return this.enabled;
+ }
+
+ public void setEnabled( boolean enabled )
+ {
+ this.enabled = enabled;
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterException.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterException.java
new file mode 100644
index 00000000..8969d1a2
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterException.java
@@ -0,0 +1,14 @@
+package org.openslx.runvirt.configuration;
+
+public class FilterException extends Exception
+{
+ /**
+ * Version for serialization.
+ */
+ private static final long serialVersionUID = 7293420658901349154L;
+
+ public FilterException( String errorMsg )
+ {
+ super( errorMsg );
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterFunction.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterFunction.java
new file mode 100644
index 00000000..1d716201
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterFunction.java
@@ -0,0 +1,12 @@
+package org.openslx.runvirt.configuration;
+
+@FunctionalInterface
+public interface FilterFunction<T, R>
+{
+ public void filter( T config, R args ) throws FilterException;
+
+ public default void apply( T config, R args ) throws FilterException
+ {
+ this.filter( config, args );
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterGeneric.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterGeneric.java
new file mode 100644
index 00000000..e66c8f21
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterGeneric.java
@@ -0,0 +1,9 @@
+package org.openslx.runvirt.configuration;
+
+public abstract class FilterGeneric<T, R> extends Filter<T, R>
+{
+ public FilterGeneric( String name )
+ {
+ super( name );
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterManager.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterManager.java
new file mode 100644
index 00000000..a97ad6d1
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterManager.java
@@ -0,0 +1,80 @@
+package org.openslx.runvirt.configuration;
+
+import java.util.ArrayList;
+
+public final class FilterManager<T, R>
+{
+ private ArrayList<Filter<T, R>> filters;
+ private T config;
+ private R args;
+
+ public FilterManager( T config, R args )
+ {
+ this.filters = new ArrayList<Filter<T, R>>();
+ this.config = config;
+ this.args = args;
+ }
+
+ public void register( Filter<T, R> filter )
+ {
+ this.register( filter, true );
+ }
+
+ public void register( Filter<T, R> filter, boolean enabled )
+ {
+ filter.setEnabled( enabled );
+ this.filters.add( filter );
+ }
+
+ public void register( String name, FilterFunction<T, R> filterFunction )
+ {
+ this.register( name, filterFunction, true );
+ }
+
+ public void register( String name, FilterFunction<T, R> filterFunction, boolean enabled )
+ {
+ final Filter<T, R> filter = new Filter<T, R>( name ) {
+ @Override
+ public void filter( T document, R args ) throws FilterException
+ {
+ filterFunction.apply( document, args );
+ }
+ };
+
+ filter.setEnabled( enabled );
+ this.filters.add( filter );
+ }
+
+ public void filterAll() throws FilterException
+ {
+ for ( Filter<T, R> filter : this.filters ) {
+ try {
+ filter.apply( this.config, this.args );
+ } catch ( FilterException e ) {
+ final String errorMsg = new String(
+ "Error in configuration filter '" + filter.getName() + "':" + e.getLocalizedMessage() );
+ throw new FilterException( errorMsg );
+ }
+ }
+ }
+
+ private String showFilters()
+ {
+ String filterSummary = new String();
+ final int maxFilterNumCharacters = ( this.filters.size() + 1 ) / 10;
+
+ for ( int i = 0; i < this.filters.size(); i++ ) {
+ final Filter<T, R> filter = this.filters.get( i );
+ final String paddedNumber = String.format( "%-" + maxFilterNumCharacters + "s", i + 1 );
+ filterSummary += paddedNumber + ": " + filter.getName() + System.lineSeparator();
+ }
+
+ return filterSummary;
+ }
+
+ @Override
+ public String toString()
+ {
+ return this.showFilters();
+ }
+}
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterSpecific.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterSpecific.java
new file mode 100644
index 00000000..8cff83bd
--- /dev/null
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/configuration/FilterSpecific.java
@@ -0,0 +1,18 @@
+package org.openslx.runvirt.configuration;
+
+public abstract class FilterSpecific<T, R, H> extends Filter<T, R>
+{
+ private final H hypervisor;
+
+ public FilterSpecific( String name, H hypervisor )
+ {
+ super( name );
+
+ this.hypervisor = hypervisor;
+ }
+
+ public H getHypervisor()
+ {
+ return this.hypervisor;
+ }
+}