package de.tud.inf.example.table; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; public class ComplexAttributeFactory { public static final String[] SYMBOLS = { "gauss", "uniform", "matrix", "simple_matrix", "sparse_matrix", "sparse_binary_matrix", "map", "data_map" }; public static final Class[] CLASSES = { GaussAttributeDescription.class, UniformAttributeDescription.class, MatrixAttributeDescription.class, SimpleMatrixAttributeDescription.class, SparseMatrixAttributeDescription.class, SparseBinaryMatrixAttributeDescription.class, MapAttributeDescription.class, DataMapAttributeDescription.class }; public static ComplexAttributeDescription createAttributeDescription(int[] attIds, int[] paramIds, String symbol, String name, String hint) { ComplexAttributeDescription instance = null; Object[] args = new Object[]{attIds,paramIds,symbol,name,hint}; Class cl = null; Constructor constr; for(int i=0;i<SYMBOLS.length;i++) { if(SYMBOLS[i].equals(symbol)) { cl = CLASSES[i]; break; } } if(cl == null) cl = ComplexAttributeDescription.class; constr = cl.getConstructors()[0]; try { instance = (ComplexAttributeDescription)constr.newInstance(args); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } return instance; } }