CHESSIoT_Dev_old-master/org.polarsys.chess.core/unused/annotations/DynamicConstraintProcessor.java
/*
-----------------------------------------------------------------------
--          			CHESS core plugin							 --
--                                                                   --
--                    Copyright (C) 2011-2012                        --
--                 University of Padova, ITALY                       --
--                                                                   --
-- Author: Alessandro Zovi         azovi@math.unipd.it               --
--                                                                   --
-- All rights reserved. This program and the accompanying materials  --
-- are made available under the terms of the Eclipse Public License  --
-- v1.0 which accompanies this distribution, and is available at     --
-- http://www.eclipse.org/legal/epl-v20.html                         --
-----------------------------------------------------------------------
*/

package org.polarsys.chess.core.annotations;
import java.lang.reflect.Field;
import java.util.ArrayList;

public class DynamicConstraintProcessor {
	public static ArrayList<IEl> list = new ArrayList<IEl>();

	public void parse(Class<?> clazz) throws Exception {
		Field[] fields = clazz.getFields();

		for (Field field : fields) {
			if (field.isAnnotationPresent(DynamicConstraint.class)) {

				DynamicConstraint test = field
						.getAnnotation(DynamicConstraint.class);
				String name = test.name();

				try {
					if (field.get(null) instanceof IEl) {
						IEl obj = (IEl) field.get(null);
						list.add(obj);
					}
				} catch (Exception e) {
					System.err.println("Error during the parsing of annotation: " + name);
				}
			}
		}
	}

	public static void main(String[] args) {
		DynamicConstraintProcessor parser = new DynamicConstraintProcessor();
		try {
			parser.parse(Class.forName("LibExample"));
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		for (IEl iEl : list) {
			System.out.println(iEl);
		}
	}
}
