Example usage for org.apache.commons.lang.mutable MutableObject MutableObject

List of usage examples for org.apache.commons.lang.mutable MutableObject MutableObject

Introduction

In this page you can find the example usage for org.apache.commons.lang.mutable MutableObject MutableObject.

Prototype

public MutableObject(Object value) 

Source Link

Document

Constructs a new MutableObject with the specified value.

Usage

From source file:com.ms.commons.test.tool.ExportDatabaseData.java

private static String getSqlTableName(String sql, final Map<String, Integer> tableMap,
        final MutableObject refTableName) {
    CCJSqlParserManager sqlPaerserManager = new CCJSqlParserManager();
    try {/*from w  w  w  .  java 2  s. c o  m*/
        Statement statement = sqlPaerserManager.parse(new StringReader(sql));
        final MutableObject refTable = new MutableObject(null);

        statement.accept(new StatementVisitor() {

            public void visit(CreateTable createTable) {
                throw new MessageException("Cannot parser sql for: " + createTable.getClass().getSimpleName());
            }

            public void visit(Truncate truncate) {
                throw new MessageException("Cannot parser sql for: " + truncate.getClass().getSimpleName());
            }

            public void visit(Drop drop) {
                throw new MessageException("Cannot parser sql for: " + drop.getClass().getSimpleName());
            }

            public void visit(Replace replace) {
                throw new MessageException("Cannot parser sql for: " + replace.getClass().getSimpleName());
            }

            public void visit(Insert insert) {
                throw new MessageException("Cannot parser sql for: " + insert.getClass().getSimpleName());
            }

            public void visit(Update update) {
                throw new MessageException("Cannot parser sql for: " + update.getClass().getSimpleName());
            }

            public void visit(Delete delete) {
                throw new MessageException("Cannot parser sql for: " + delete.getClass().getSimpleName());
            }

            public void visit(Select select) {
                select.getSelectBody().accept(new SelectVisitor() {

                    public void visit(Union union) {
                        refTable.setValue("table_" + GLOBAL_COUNT.getAndIncrement());
                    }

                    public void visit(PlainSelect plainSelect) {
                        plainSelect.getFromItem().accept(new FromItemVisitor() {

                            public void visit(SubJoin subjoin) {
                                refTable.setValue("table_" + GLOBAL_COUNT.getAndIncrement());
                            }

                            public void visit(SubSelect subSelect) {
                                refTable.setValue("table_" + GLOBAL_COUNT.getAndIncrement());
                            }

                            public void visit(Table tableName) {
                                String tn = tableName.getName().trim().toLowerCase();
                                refTableName.setValue(tn);
                                Integer tnCount = tableMap.get(tn);
                                if (tnCount == null) {
                                    tableMap.put(tn, Integer.valueOf(1));
                                    refTable.setValue(tn);
                                } else {
                                    tnCount = Integer.valueOf(tnCount.intValue() + 1);
                                    tableMap.put(tn, tnCount);
                                    refTable.setValue(tn + "_" + tnCount.intValue());
                                }
                            }
                        });
                    }
                });
            }
        });

        if (refTable.getValue() == null) {
            throw new MessageException("Canot parser sql and get table name.");
        }
        return (String) refTable.getValue();
    } catch (Exception e) {
        throw ExceptionUtil.wrapToRuntimeException(e);
    }
}

From source file:org.apereo.portal.events.aggr.PortalRawEventsAggregatorImpl.java

private EventProcessingResult doAggregateRawEventsInternal() {
    if (!this.clusterLockService.isLockOwner(AGGREGATION_LOCK_NAME)) {
        throw new IllegalStateException("The cluster lock " + AGGREGATION_LOCK_NAME
                + " must be owned by the current thread and server");
    }//from   w ww.  j av  a2 s .co m

    if (!this.portalEventDimensionPopulator.isCheckedDimensions()) {
        //First time aggregation has happened, run populateDimensions to ensure enough dimension data exists
        final boolean populatedDimensions = this.portalEventAggregationManager.populateDimensions();
        if (!populatedDimensions) {
            this.logger.warn(
                    "Aborting raw event aggregation, populateDimensions returned false so the state of date/time dimensions is unknown");
            return null;
        }
    }

    //Flush any dimension creation before aggregation
    final EntityManager entityManager = this.getEntityManager();
    entityManager.flush();
    entityManager.setFlushMode(FlushModeType.COMMIT);

    final IEventAggregatorStatus eventAggregatorStatus = eventAggregationManagementDao
            .getEventAggregatorStatus(IEventAggregatorStatus.ProcessingType.AGGREGATION, true);

    //Update status with current server name
    final String serverName = this.portalInfoProvider.getUniqueServerName();
    final String previousServerName = eventAggregatorStatus.getServerName();
    if (previousServerName != null && !serverName.equals(previousServerName)) {
        this.logger.debug("Last aggregation run on {} clearing all aggregation caches", previousServerName);
        final Session session = getEntityManager().unwrap(Session.class);
        final Cache cache = session.getSessionFactory().getCache();
        cache.evictEntityRegions();
    }

    eventAggregatorStatus.setServerName(serverName);

    //Calculate date range for aggregation
    DateTime lastAggregated = eventAggregatorStatus.getLastEventDate();
    if (lastAggregated == null) {
        lastAggregated = portalEventDao.getOldestPortalEventTimestamp();

        //No portal events to aggregate, skip aggregation
        if (lastAggregated == null) {
            return new EventProcessingResult(0, null, null, true);
        }

        //First time aggregation has run, initialize the CLEAN_UNCLOSED status to save catch-up time 
        final IEventAggregatorStatus cleanUnclosedStatus = eventAggregationManagementDao
                .getEventAggregatorStatus(IEventAggregatorStatus.ProcessingType.CLEAN_UNCLOSED, true);
        AggregationIntervalInfo oldestMinuteInterval = this.intervalHelper
                .getIntervalInfo(AggregationInterval.MINUTE, lastAggregated);
        cleanUnclosedStatus.setLastEventDate(oldestMinuteInterval.getStart().minusMinutes(1));
        eventAggregationManagementDao.updateEventAggregatorStatus(cleanUnclosedStatus);
    }

    final DateTime newestEventTime = DateTime.now().minus(this.aggregationDelay).secondOfMinute()
            .roundFloorCopy();

    final Thread currentThread = Thread.currentThread();
    final String currentName = currentThread.getName();
    final MutableInt events = new MutableInt();
    final MutableObject lastEventDate = new MutableObject(newestEventTime);

    boolean complete;
    try {
        currentThread.setName(currentName + "-" + lastAggregated + "_" + newestEventTime);

        logger.debug("Starting aggregation of events between {} (inc) and {} (exc)", lastAggregated,
                newestEventTime);

        //Do aggregation, capturing the start and end dates
        eventAggregatorStatus.setLastStart(DateTime.now());

        complete = portalEventDao.aggregatePortalEvents(lastAggregated, newestEventTime,
                this.eventAggregationBatchSize,
                new AggregateEventsHandler(events, lastEventDate, eventAggregatorStatus));

        eventAggregatorStatus.setLastEventDate((DateTime) lastEventDate.getValue());
        eventAggregatorStatus.setLastEnd(DateTime.now());
    } finally {
        currentThread.setName(currentName);
    }

    //Store the results of the aggregation
    eventAggregationManagementDao.updateEventAggregatorStatus(eventAggregatorStatus);

    complete = complete
            && (this.eventAggregationBatchSize <= 0 || events.intValue() < this.eventAggregationBatchSize);
    return new EventProcessingResult(events.intValue(), lastAggregated,
            eventAggregatorStatus.getLastEventDate(), complete);
}

From source file:org.jasig.portal.events.aggr.PortalRawEventsAggregatorImpl.java

private EventProcessingResult doAggregateRawEventsInternal() {
    if (!this.clusterLockService.isLockOwner(AGGREGATION_LOCK_NAME)) {
        throw new IllegalStateException("The cluster lock " + AGGREGATION_LOCK_NAME
                + " must be owned by the current thread and server");
    }/*ww w  . j  av  a 2s  .  co m*/

    if (!this.portalEventDimensionPopulator.isCheckedDimensions()) {
        //First time aggregation has happened, run populateDimensions to ensure enough dimension data exists
        final boolean populatedDimensions = this.portalEventAggregationManager.populateDimensions();
        if (!populatedDimensions) {
            this.logger.warn(
                    "Aborting raw event aggregation, populateDimensions returned false so the state of date/time dimensions is unknown");
            return null;
        }
    }

    //Flush any dimension creation before aggregation
    final EntityManager entityManager = this.getEntityManager();
    entityManager.flush();
    entityManager.setFlushMode(FlushModeType.COMMIT);

    final IEventAggregatorStatus eventAggregatorStatus = eventAggregationManagementDao
            .getEventAggregatorStatus(ProcessingType.AGGREGATION, true);

    //Update status with current server name
    final String serverName = this.portalInfoProvider.getUniqueServerName();
    final String previousServerName = eventAggregatorStatus.getServerName();
    if (previousServerName != null && !serverName.equals(previousServerName)) {
        this.logger.debug("Last aggregation run on {} clearing all aggregation caches", previousServerName);
        final Session session = getEntityManager().unwrap(Session.class);
        final Cache cache = session.getSessionFactory().getCache();
        cache.evictEntityRegions();
    }

    eventAggregatorStatus.setServerName(serverName);

    //Calculate date range for aggregation
    DateTime lastAggregated = eventAggregatorStatus.getLastEventDate();
    if (lastAggregated == null) {
        lastAggregated = portalEventDao.getOldestPortalEventTimestamp();

        //No portal events to aggregate, skip aggregation
        if (lastAggregated == null) {
            return new EventProcessingResult(0, null, null, true);
        }

        //First time aggregation has run, initialize the CLEAN_UNCLOSED status to save catch-up time 
        final IEventAggregatorStatus cleanUnclosedStatus = eventAggregationManagementDao
                .getEventAggregatorStatus(ProcessingType.CLEAN_UNCLOSED, true);
        AggregationIntervalInfo oldestMinuteInterval = this.intervalHelper
                .getIntervalInfo(AggregationInterval.MINUTE, lastAggregated);
        cleanUnclosedStatus.setLastEventDate(oldestMinuteInterval.getStart().minusMinutes(1));
        eventAggregationManagementDao.updateEventAggregatorStatus(cleanUnclosedStatus);
    }

    final DateTime newestEventTime = DateTime.now().minus(this.aggregationDelay).secondOfMinute()
            .roundFloorCopy();

    final Thread currentThread = Thread.currentThread();
    final String currentName = currentThread.getName();
    final MutableInt events = new MutableInt();
    final MutableObject lastEventDate = new MutableObject(newestEventTime);

    boolean complete;
    try {
        currentThread.setName(currentName + "-" + lastAggregated + "_" + newestEventTime);

        logger.debug("Starting aggregation of events between {} (inc) and {} (exc)", lastAggregated,
                newestEventTime);

        //Do aggregation, capturing the start and end dates
        eventAggregatorStatus.setLastStart(DateTime.now());

        complete = portalEventDao.aggregatePortalEvents(lastAggregated, newestEventTime,
                this.eventAggregationBatchSize,
                new AggregateEventsHandler(events, lastEventDate, eventAggregatorStatus));

        eventAggregatorStatus.setLastEventDate((DateTime) lastEventDate.getValue());
        eventAggregatorStatus.setLastEnd(DateTime.now());
    } finally {
        currentThread.setName(currentName);
    }

    //Store the results of the aggregation
    eventAggregationManagementDao.updateEventAggregatorStatus(eventAggregatorStatus);

    complete = complete
            && (this.eventAggregationBatchSize <= 0 || events.intValue() < this.eventAggregationBatchSize);
    return new EventProcessingResult(events.intValue(), lastAggregated,
            eventAggregatorStatus.getLastEventDate(), complete);
}

From source file:xml2rdf.example.TestCustomized1.java

public static void main(String[] args) {
    SAXParserFactory factory = SAXParserFactory.newInstance();
    MutableObject prefix1 = new MutableObject("aml");
    MutableObject url = new MutableObject("https://github.com/igg777/automationml/blob/master/aml.ttl/#");
    MutableObject prefix2 = new MutableObject("dc");
    MutableObject url2 = new MutableObject("http://purl.org/dc/elements/1.1/");
    MutableObject prefix3 = new MutableObject("schema");
    MutableObject url3 = new MutableObject("http://schema.org/");

    try {//  w  w w  .j a  v a  2  s .  c  o m

        long SumTime = 0;
        int runTimes = 1;
        for (int i = 0; i < runTimes; ++i) {
            long startTime = System.currentTimeMillis();
            SAXParser saxParser = factory.newSAXParser();
            CustomizedSAXYFilterHandler handler = new CustomizedSAXYFilterHandler();
            TemplateRDF template = new TemplateRDF();
            // For STELL-I.rtml
            template.setDefaultNameSpace("http://example.org/");
            //             template.setNameSpaceMapping(prefix1, url);             
            //             template.setNameSpaceMapping(prefix2, url2);
            //             template.setNameSpaceMapping(prefix3, url3);
            NameSpaceMapping aml = new NameSpaceMapping(prefix1.getValue().toString(),
                    url.getValue().toString());
            NameSpaceMapping dc = new NameSpaceMapping(prefix2.getValue().toString(),
                    url2.getValue().toString());
            NameSpaceMapping schema = new NameSpaceMapping(prefix3.getValue().toString(),
                    url3.getValue().toString());

            //             NameSpaceMapping prefix1 = new NameSpaceMapping("aml","https://github.com/igg777/automationml/blob/master/aml.ttl");

            //             template.addTriplePattern("RTMLData", null, "type", null, "/RTML/Telescope/Camera/FilterWheel/Filter/@type", null);

            //             template.addTriplePattern(prefix1,"/RTML/Telescope/Camera/FilterWheel/Filter/@type", null, prefix2,"FocalLength", null, null,"/RTML/Telescope/FocalLength/text()",XSDDatatype.XSDdouble);

            //             template.addTriplePattern("/RTML/Telescope/Camera/FilterWheel/Filter/@type", null, "FocalLength", null, "/RTML/Telescope/FocalLength/text()",XSDDatatype.XSDdouble);
            //template.addTriplePattern(aml,"/RTML/Telescope/Camera/FilterWheel/Filter/@type", null, aml,"FocalLength", null,null, "/RTML/Telescope/FocalLength/text()",XSDDatatype.XSDdouble);

            //template.addTriplePattern(aml,"AdditionalInformation", null, aml,"hasWriterName", null, aml,"/CAEXFile/AdditionalInformation/WriterHeader/WriterName/text()",XSDDatatype.XSDstring);

            //CAEX file
            template.addTriplePattern(":CAEXFile", null, "aml:hasFileName", null, "/CAEXFile/@FileName",
                    XSDDatatype.XSDstring);
            template.addTriplePattern(":CAEXFile", null, "aml:hasSchemaVersion", null,
                    "/CAEXFile/@SchemaVersion", XSDDatatype.XSDstring);
            template.addTriplePattern(":CAEXFile", null, "aml:hasAdditionalInformation", null,
                    ":CAEXFile/AdditionalInformation", null);
            template.addTriplePattern(":CAEXFile", null, "aml:hasExternalReference", null,
                    ":CAEXFile/ExternalReference", null);
            template.addTriplePattern(":CAEXFile", null, "aml:hasInstanceHierarchy", null,
                    ":CAEXFile/InstanceHierarchy", null);
            template.addTriplePattern(":CAEXFile", null, "aml:hasInterfaceClassLib", null,
                    ":CAEXFile/InterfaceClassLib", null);
            template.addTriplePattern(":CAEXFile", null, "aml:hasRoleClassLib", null, ":CAEXFile/RoleClassLib",
                    null);
            template.addTriplePattern(":CAEXFile", null, "aml:hasSystemUnitClassLib", null,
                    ":CAEXFile/SystemUnitClassLib", null);

            //additional information
            template.addTriplePattern(":CAEXFile/AdditionalInformation", null, "aml:hasAutomationMLVersion",
                    null, "/CAEXFile/AdditionalInformation/@AutomationMLVersion", XSDDatatype.XSDstring);
            template.addTriplePattern(":CAEXFile/AdditionalInformation", null, "aml:hasWriterName", null,
                    "/CAEXFile/AdditionalInformation/WriterHeader/WriterName/text()", XSDDatatype.XSDstring);
            template.addTriplePattern(":CAEXFile/AdditionalInformation", null, "aml:hasWriterId", null,
                    "/CAEXFile/AdditionalInformation/WriterHeader/WriterID/text()", XSDDatatype.XSDstring);
            template.addTriplePattern(":CAEXFile/AdditionalInformation", null, "aml:hasWriterVendor", null,
                    "/CAEXFile/AdditionalInformation/WriterHeader/WriterVendor/text()", XSDDatatype.XSDstring);
            template.addTriplePattern(":CAEXFile/AdditionalInformation", null, "aml:hasWriterURL", null,
                    "/CAEXFile/AdditionalInformation/WriterHeader/WriterVendorURL/text()",
                    XSDDatatype.XSDstring);
            template.addTriplePattern(":CAEXFile/AdditionalInformation", null, "aml:hasWriterVersion", null,
                    "/CAEXFile/AdditionalInformation/WriterHeader/WriterVersion/text()", XSDDatatype.XSDstring);
            template.addTriplePattern(":CAEXFile/AdditionalInformation", null, "aml:hasWriterRelease", null,
                    "/CAEXFile/AdditionalInformation/WriterHeader/WriterRelease/text()", XSDDatatype.XSDstring);
            template.addTriplePattern(":CAEXFile/AdditionalInformation", null, "aml:lastWritingDate", null,
                    "/CAEXFile/AdditionalInformation/WriterHeader/LastWritingDateTime/text()",
                    XSDDatatype.XSDdateTime);

            // hasProject(blank node?)            
            template.addTriplePattern(":CAEXFile/AdditionalInformation", null, "aml:hasProjectID", null,
                    "/CAEXFile/AdditionalInformation/WriterHeader/WriterProjectID/text()",
                    XSDDatatype.XSDstring);
            template.addTriplePattern(":CAEXFile/AdditionalInformation", null, "aml:hasProjectTitle", null,
                    "/CAEXFile/AdditionalInformation/WriterHeader/WriterProjectTitle/text()",
                    XSDDatatype.XSDstring);

            //ExternalReference
            template.addTriplePattern(":CAEXFile/ExternalReference", null, "aml:externalReferencePath", null,
                    "/CAEXFile/ExternalReference/@Path", XSDDatatype.XSDstring);
            template.addTriplePattern(":CAEXFile/ExternalReference", null, "aml:externalReferenceAlias", null,
                    "/CAEXFile/ExternalReference/@Alias", XSDDatatype.XSDstring);

            //InstanceHierarchy
            // template.addTriplePattern("/CAEXFile/InstanceHierarchy/InternalElement/@Name", null,"schema:name", null,"/CAEXFile/InstanceHierarchy/InternalElement/@ID",null);// smart interpretation example

            //InternalElement
            template.addTriplePattern(":CAEXFile/InstanceHierarchy", null, "aml:hasInternalElement", null,
                    ":CAEXFile/InstanceHierarchy/InternalElement_1", null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy", null, "aml:hasInternalElement", null,
                    ":CAEXFile/InstanceHierarchy/InternalElement_2", null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_2", null, "dc:identifier",
                    null, "/CAEXFile/InstanceHierarchy/InternalElement[@Name='secondScrewdriver']/@ID", null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_1", null, "dc:identifier",
                    null, "/CAEXFile/InstanceHierarchy/InternalElement[@Name='firstScrewdriver']/@ID", null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_2", null, "schema:name",
                    null,
                    "/CAEXFile/InstanceHierarchy/InternalElement[@ID='{19dcf818-4716-4fc1-a85f-28e1938c4c3a}']/@Name",
                    null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_1", null, "schema:name",
                    null,
                    "/CAEXFile/InstanceHierarchy/InternalElement[@ID='{788eb291-f103-4fdc-aba0-4893b599f556}']/@Name",
                    null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_1", null,
                    "aml:RefBaseSystemUnitPath", null,
                    "/CAEXFile/InstanceHierarchy/InternalElement[@ID='{788eb291-f103-4fdc-aba0-4893b599f556}']/@RefBaseSystemUnitPath",
                    null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_2", null,
                    "aml:RefBaseSystemUnitPath", null,
                    "/CAEXFile/InstanceHierarchy/InternalElement[@ID='{19dcf818-4716-4fc1-a85f-28e1938c4c3a}']/@RefBaseSystemUnitPath",
                    null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_1/ExternalInterface1", null,
                    "schema:name", null,
                    "/CAEXFile/InstanceHierarchy/InternalElement/ExternalInterface[@ID='{5f535d4c-dd46-4c1c-898c-4e58419048b6}']/@Name",
                    null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_2/ExternalInterface2", null,
                    "schema:name", null,
                    "/CAEXFile/InstanceHierarchy/InternalElement/ExternalInterface[@ID='50e10905-ac18-413c-afab-ad8ed1569fff']/@Name",
                    null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_1/ExternalInterface1", null,
                    "dc:identifier", null,
                    "/CAEXFile/InstanceHierarchy/InternalElement/ExternalInterface[@ID='{5f535d4c-dd46-4c1c-898c-4e58419048b6}']/@ID",
                    null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_2/ExternalInterface2", null,
                    "dc:identifier", null,
                    "/CAEXFile/InstanceHierarchy/InternalElement/ExternalInterface[@ID='50e10905-ac18-413c-afab-ad8ed1569fff']/@ID",
                    null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_1/ExternalInterface1", null,
                    "aml:refBaseClassPath", null,
                    "/CAEXFile/InstanceHierarchy/InternalElement/ExternalInterface[@ID='{5f535d4c-dd46-4c1c-898c-4e58419048b6}']/@RefBaseClassPath",
                    null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_2/ExternalInterface2", null,
                    "aml:refBaseClassPath", null,
                    "/CAEXFile/InstanceHierarchy/InternalElement/ExternalInterface[@ID='50e10905-ac18-413c-afab-ad8ed1569fff']/@RefBaseClassPath",
                    null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_1/ExternalInterface1", null,
                    "aml:supportedRoleClass", null,
                    ":CAEXFile/InstanceHierarchy/InternalElement/ExternalInterface/SupportedRoleClass1", null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_2/ExternalInterface2", null,
                    "aml:supportedRoleClass", null,
                    ":CAEXFile/InstanceHierarchy/InternalElement/ExternalInterface/SupportedRoleClass1", null);
            template.addTriplePattern(
                    ":CAEXFile/InstanceHierarchy/InternalElement/ExternalInterface/SupportedRoleClass1", null,
                    "aml:refRoleClassPath", null,
                    "/CAEXFile/InstanceHierarchy/InternalElement/SupportedRoleClass/@RefRoleClassPath", null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_1", null,
                    "aml:hasRoleRequeriment", null,
                    ":CAEXFile/InstanceHierarchy/InternalElement/RoleRequirements_1", null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_2", null,
                    "aml:hasRoleRequeriment", null,
                    ":CAEXFile/InstanceHierarchy/InternalElement/RoleRequirements_1", null);
            template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_1", null,
                    "aml:refBaseRoleClassPath", null,
                    "/CAEXFile/InstanceHierarchy/InternalElement/RoleRequirements/@RefBaseRoleClassPath", null);

            //InterfaceClassLib
            template.addTriplePattern(":CAEXFile", null, "aml:hasInterfaceClassLib", null,
                    ":CAEXFile/InterfaceClassLib", null);
            template.addTriplePattern(":CAEXFile/InterfaceClassLib", null, "schema:name", null,
                    "/CAEXFile/InterfaceClassLib/@Name", null);
            template.addTriplePattern(":CAEXFile/InterfaceClassLib", null, "aml:hasInterfaceClass", null,
                    ":CAEXFile/InterfaceClassLib/InterfaceClass", null);
            template.addTriplePattern(":CAEXFile/InterfaceClassLib", null, "aml:hasVersion", null,
                    "/CAEXFile/InterfaceClassLib/Version/text()", XSDDatatype.XSDstring);
            template.addTriplePattern(":CAEXFile/InterfaceClassLib/InterfaceClass", null,
                    "aml:refBaseClassPath", null,
                    "/CAEXFile/InterfaceClassLib/InterfaceClass/@RefBaseClassPath", XSDDatatype.XSDstring);
            template.addTriplePattern(":CAEXFile/InterfaceClassLib/InterfaceClass", null, "schema:name", null,
                    "/CAEXFile/InterfaceClassLib/InterfaceClass/@Name", XSDDatatype.XSDstring);
            template.addTriplePattern(":CAEXFile", null, "aml:hasRoleClassLib", null,
                    ":CAEXFile/RoleClassLib_1", null);
            template.addTriplePattern(":CAEXFile/RoleClassLib_1", null, "schema:name", null,
                    "/CAEXFile/RoleClassLib/@Name", null);
            template.addTriplePattern(":CAEXFile/RoleClassLib_1", null, "aml:hasVersion", null,
                    "/CAEXFile/RoleClassLib/Version/text()", XSDDatatype.XSDstring);
            template.addTriplePattern(":CAEXFile/RoleClassLib_1", null, "aml:hasRoleclass_1", null,
                    ":CAEXFile/RoleClassLib/RoleClass_1", null);
            template.addTriplePattern(":CAEXFile/RoleClassLib_1/RoleClass_1", null, "schema:name", null,
                    "/CAEXFile/RoleClassLib/RoleClass/@Name", null);
            template.addTriplePattern(":CAEXFile/RoleClassLib_1/RoleClass_1", null, "aml:refBaseClassPath",
                    null, "/CAEXFile/RoleClassLib/RoleClass/@RefBaseClassPath", null);
            template.addTriplePattern(":CAEXFile", null, "aml:hasSystemUnitClassLib", null,
                    ":CAEXFile/SystemUnitClassLib_1", null);
            template.addTriplePattern(":CAEXFile/SystemUnitClassLib_1", null, "schema:name", null,
                    "/CAEXFile/SystemUnitClassLib/@Name", null);
            template.addTriplePattern(":CAEXFile/SystemUnitClassLib_1", null, "aml:hasVersion", null,
                    "/CAEXFile/SystemUnitClassLib/Version/text()", null);
            template.addTriplePattern(":CAEXFile/SystemUnitClassLib_1", null, "aml:hasSystemUnitClass", null,
                    ":CAEXFile/SystemUnitClassLib/SystemUnitClass_1", null);
            template.addTriplePattern(":CAEXFile/SystemUnitClassLib/SystemUnitClass_1", null, "schema:name",
                    null, "/CAEXFile/SystemUnitClassLib/SystemUnitClass/@Name", null);
            template.addTriplePattern(":CAEXFile/SystemUnitClassLib/SystemUnitClass_1", null,
                    "aml:hasExternalInterface", null,
                    ":CAEXFile/SystemUnitClassLib/SystemUnitClass/ExternalInterface_2", null);
            template.addTriplePattern(":CAEXFile/SystemUnitClassLib/SystemUnitClass_1/ExternalInterface_2",
                    null, "schema:name", null,
                    "/CAEXFile/SystemUnitClassLib/SystemUnitClass/ExternalInterface/@Name", null);
            template.addTriplePattern(":CAEXFile/SystemUnitClassLib/SystemUnitClass_1/ExternalInterface_2",
                    null, "dc:identifier", null,
                    "/CAEXFile/SystemUnitClassLib/SystemUnitClass/ExternalInterface/@ID", null);
            template.addTriplePattern(":CAEXFile/SystemUnitClassLib/SystemUnitClass_1/ExternalInterface_2",
                    null, "aml:refBaseClassPath", null,
                    "/CAEXFile/SystemUnitClassLib/SystemUnitClass/ExternalInterface/@RefBaseClassPath", null);
            template.addTriplePattern(":CAEXFile/SystemUnitClassLib/SystemUnitClass_1", null,
                    "aml:supportedRoleClass", null,
                    ":CAEXFile/SystemUnitClassLib/SystemUnitClass/SupportedRoleClass1", null);
            template.addTriplePattern(":CAEXFile/SystemUnitClassLib/SystemUnitClass_1/SupportedRoleClass1",
                    null, "aml:refRoleClassPath", null,
                    "/CAEXFile/SystemUnitClassLib/SystemUnitClass/SupportedRoleClass/@RefRoleClassPath", null);

            //blank node(attribute)             
            //template.addTriplePattern(":CAEXFile/InstanceHierarchy/InternalElement_1", null,"aml:hasAttribute ", null,"_:Attribute_1",null);
            //template.addTriplePattern("_:Attribute_1", null,"schema:name ", null,"/CAEXFile/InstanceHierarchy/InternalElement/Attribute/@Name",null);

            //             template.addTriplePattern("/RTML/Telescope/Camera/FilterWheel/Filter/@type", null, "units", null, "meters",XSDDatatype.XSDstring);
            //             template.addTriplePattern("Author", null, "a", null, "person",XSDDatatype.XSDstring);

            //template.addTriplePattern("/RTML/Telescope/Camera/FilterWheel/Filter/@name", null,"type", null,"CameraType",XSDDatatype.XSDstring);   

            //template.addTriplePattern("FocalLength", null,"hasvalue", null,"/RTML/Telescope/FocalLength/test()",XSDDatatype.XSDdouble);         

            //             template.addTriplePattern("/RTML/Telescope/Camera/FilterWheel/Filter/@name", null,"modelType", null,"/RTML/Telescope/Camera/FilterWheel/Filter/@type",XSDDatatype.XSDstring);
            // For publicatios.xml. It's subject is realted to :OpenAIREDataModel.
            //             template.addTriplePattern("/response/results/result/header/dri:objIdentifier/text()", null, "a", null, "bibo:Publication", null);
            //             template.addTriplePattern("/response/results/result/header/dri:objIdentifier/text()", null, "swpo:hasTitle", null, "/response/results/result/metadata/oaf:entity/oaf:result/title/text()", XSDDatatype.XSDstring);             
            //             template.addTriplePattern("/response/results/result/header/dri:objIdentifier/text()", null, ":objectIdentifier", null, "/response/results/result/header/dri:objIdentifier/text()",null);
            //             template.addTriplePattern("/response/results/result/header/dri:objIdentifier/text()", null, ":dateofacceptance", null, "/response/results/result/metadata/oaf:entity/oaf:result/dateofacceptance/text()",XSDDatatype.XSDdate);
            //             template.addTriplePattern("/response/results/result/header/dri:objIdentifier/text()", null, ":language", null, "/response/results/result/metadata/oaf:entity/oaf:result/language/@classname",XSDDatatype.XSDstring);
            //             template.addTriplePattern("/response/results/result/header/dri:objIdentifier/text()", null, ":hasPublisher", null, "/response/results/result/metadata/oaf:entity/oaf:result/publisher/text()",XSDDatatype.XSDstring);
            //             template.addTriplePattern("/response/results/result/header/dri:objIdentifier/text()", null, ":description", null, "/response/results/result/metadata/oaf:entity/oaf:result/description/text()",XSDDatatype.XSDstring);
            //             template.addTriplePattern("/response/results/result/header/dri:objIdentifier/text()", null, ":license", null, "/response/results/result/metadata/oaf:entity/oaf:result/bestlicense/@classid",XSDDatatype.XSDstring);
            //             template.addTriplePattern("/response/results/result/header/dri:objIdentifier/text()", null, ":licenseType", null, "/response/results/result/metadata/oaf:entity/oaf:result/bestlicense/@classname",XSDDatatype.XSDstring);

            // Not support
            // template.addTriplePattern(":OpenAIREDataModel", null, ":hasAuthor", null, "/response/results/result/metadata/oaf:entity/oaf:result/rels/rel/to[class="hasAuthor"]/text()",XSDDatatype.XSDstring);                          
            // handler.setTemplateRDF(template);

            // End of publications.xml

            // End of publications.xml. It's subject is related to :OpenAIREDataModel.
            handler.setTemplateRDF(template);

            //InputStream    xmlInput  = new FileInputStream("publications_template.xml");
            //InputStream    xmlInput  = new FileInputStream("STELL-I_3.rtml");
            InputStream xmlInput = new FileInputStream("ExampleTopology.xml");
            //InputStream    xmlInput  = new FileInputStream("publications.xml");
            //InputStream xmlInput = new FileInputStream("dblp_small.xml");             
            //myFilter.AppendXPath("/RTML/Telescope/Camera//*");
            //myFilter.AppendXPath("/RTML/Telescope/Camera/");
            // myFilter.AppendXPath("/response/header/page");

            // For STELL-I_3.rtml.
            // myFilter.AppendXPath("//Camera/FilterWheel");
            // myFilter.AppendXPath("//Filter");
            // For publicaitons.xml   
            /*
            myFilter.AppendXPath("//metadata");
            myFilter.AppendXPath("//publisher");
            myFilter.AppendXPath("//journal");
            myFilter.AppendXPath("//title");
            myFilter.AppendXPath("//originalId");
            myFilter.AppendXPath("//dateofacceptance");
                    
            */
            // For dblp_small.xml 
            /*
            myFilter.AppendXPath("//author");             
            myFilter.AppendXPath("//title");
            myFilter.AppendXPath("//journal");
            myFilter.AppendXPath("//booktitle");
            myFilter.AppendXPath("//volume");
            myFilter.AppendXPath("//year");
            myFilter.AppendXPath("//month");
            myFilter.AppendXPath("//pages");
            */

            //handler.setFilter(myFilter);
            //long startTime = System.currentTimeMillis();
            saxParser.parse(xmlInput, handler);
            long stopTime = System.currentTimeMillis();
            long elapsedTime = stopTime - startTime;
            SumTime += elapsedTime;
            //handler.model.write(new FileWriter("dblp_small_customized.rdf"), "RDF/XML-ABBREV");
            System.out.println("@prefix       :  " + template.getDefaultNameSpace());
            System.out.println("@prefix    aml:  " + url.toString());
            System.out.println("@prefix     dc:  " + url2.toString());
            System.out.println("@prefix schema:  " + url3.toString() + "\n\n\n");

            handler.model.write(System.out, "TTL");
            //RDFDataMgr.write(System.out, handler.model, Lang.TURTLE);
            //RDFDataMgr.write(System.out,model, "TURTLE");

            //   System.out.println("prefix:  " + template.prefixSet.iterator());
            //
            //System.out.println("prefix num: "+ template.prefixSet.size());
            // System.out.println(SAXYFilterHandler.outputStream);
            //TimeUnit.MILLISECONDS.sleep(2000);

        }
        System.out.println("Time elapsed: " + SumTime / runTimes);
    } catch (SAXException e) {
        System.out.println(e.getMessage());
    } catch (Exception e) {
        System.out.println(e.getMessage());
        e.printStackTrace();
    }
}