public static <T extends Exporter> List<T> findExporters ( final EObject start, final Class<T> clazz ) { if ( ! ( start.eContainer () instanceof MasterServer ) ) { return null; } final List<T> result = new LinkedList<> (); for ( final Exporter exporter : ( (MasterServer)start.eContainer () ).getExporter () ) { if ( clazz.isAssignableFrom ( exporter.getClass () ) ) { result.add ( clazz.cast ( exporter ) ); } } return result; }
public static <T extends Exporter> List<T> findExporters ( final EObject start, final Class<T> clazz ) { if ( ! ( start.eContainer () instanceof MasterServer ) ) { return null; } final List<T> result = new LinkedList<> (); for ( final Exporter exporter : ( (MasterServer)start.eContainer () ).getExporter () ) { if ( clazz.isAssignableFrom ( exporter.getClass () ) ) { result.add ( clazz.cast ( exporter ) ); } } return result; }
private static DataAccessConnection findConnection ( final MasterServer from, final MasterServer to ) { for ( final org.eclipse.scada.configuration.world.osgi.Connection c : from.getConnections () ) { if ( ! ( c instanceof DataAccessConnection ) ) { continue; } for ( final Exporter e : to.getExporter () ) { final Endpoint ep = c.getMatchingEndpoint ( e ); if ( ep != null ) { // this is a common endpoing of the connection and the exporter return (DataAccessConnection)c; } } } return null; }
public static void addItem ( final MasterServer master, final Item item ) { // adding item master.getItems ().add ( item ); // export item on all DA exporters for ( final Exporter exporter : master.getExporter () ) { if ( exporter instanceof DataAccessExporter ) { final ItemExport itemExport = OsgiFactory.eINSTANCE.createItemExport (); itemExport.setExportName ( item.getName () ); itemExport.setItem ( item ); ( (DataAccessExporter)exporter ).getExports ().add ( itemExport ); } } }
public static void addItem ( final MasterServer master, final Item item ) { // adding item master.getItems ().add ( item ); // export item on all DA exporters for ( final Exporter exporter : master.getExporter () ) { if ( exporter instanceof DataAccessExporter ) { final ItemExport itemExport = OsgiFactory.eINSTANCE.createItemExport (); itemExport.setExportName ( item.getName () ); itemExport.setItem ( item ); ( (DataAccessExporter)exporter ).getExports ().add ( itemExport ); } } }
for ( final Exporter exp : master.getExporter () )
for ( final Exporter exp : master.getExporter () )
private <T extends Connection> T createConnection ( final EClass connectionClass, final Class<T> clazz, final Global global, final Local local ) { final T connection = clazz.cast ( OsgiFactory.eINSTANCE.create ( connectionClass ) ); final String tag = connection.getTypeTag (); final String cname = String.format ( "global.%s.to.%s.%s", Names.makeName ( global.getGlobal () ), local.getId (), tag ); connection.setName ( cname ); // set credentials connection.setCredentials ( EcoreUtil.copy ( findCredentials ( global, local ) ) ); // add connection to "from" global.getGlobal ().getConnections ().add ( connection ); // point connection to "to" final LinkedList<Endpoint> endpoints = new LinkedList<> (); for ( final Exporter exporter : local.getLocal ().getExporter () ) { endpoints.addAll ( connection.getPossibleEndpoints ( exporter ) ); } if ( endpoints.isEmpty () ) { throw new IllegalStateException ( String.format ( "Unable to find an exporter that could serve as endpoint for connection type %s on master %s", connectionClass.getName (), local.getLocal ().getName () ) ); } final Endpoint endpoint = endpoints.getFirst (); connection.setEndpoint ( endpoint ); // FIXME: adding connection analyzers to "app", in phase 1 return connection; }