// Path: src/edu/toronto/cs/xcurator/mapping/Mapping.java
// public interface Mapping {
// 
//     /**
//      * Check if this mapping is initialized.
//      *
//      * @return
//      */
//     boolean isInitialized();
// 
//     /**
//      * Set this mapping as initialized, return success flag.
//      *
//      * @return true if successfully initialized, false if not successful.
//      */
//     boolean setInitialized();
// 
//     /**
//      * Set the base namespace context of the XML document to be transformed
//      * using this mapping. This namespace context can be overrided by individual
//      * entities.
//      *
//      * @param nsContext
//      */
//     void setBaseNamespaceContext(NsContext nsContext);
// 
//     /**
//      * Get the base namespace context of the XML document to be transformed
//      * using this mapping.
//      *
//      * @return
//      */
//     NsContext getBaseNamespaceContext();
// 
//     void addEntity(Schema schema);
// 
//     Schema getEntity(String id);
// 
//     void removeEntity(String id);
// 
//     public Map<String, Schema> getEntities();
// 
//     Iterator<Schema> getEntityIterator();
// 
//     public void removeInvalidRelations();
// 
// }


import edu.toronto.cs.xcurator.common.DataDocument;
import edu.toronto.cs.xcurator.mapping.Mapping;
import java.util.List;
/*
 *    Copyright (c) 2013, University of Toronto.
 *
 *    Licensed under the Apache License, Version 2.0 (the "License"); you may
 *    not use this file except in compliance with the License. You may obtain
 *    a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 *    License for the specific language governing permissions and limitations
 *    under the License.
 */
package edu.toronto.cs.xcurator.discoverer;


/**
 *
 * @author zhuerkan
 */
public interface MappingDiscoveryStep {

    public enum TYPE {
        BASIC('B'),
        INTERLIKNING('I'),
        KEYATTRIBUTE('K'),
        REMOVE_GROUPING_NODES('G');

        private final char id;

        TYPE(char id) {
            this.id = id;
        }

        public char getValue() {
            return id;
        }
    }

    /**
     * Processes the mapping.
     *
     * @param dataDocuments A list of XML data documents to be processed
     * @param mapping The map of processed entities. Note that the step should
     * only modify the mapping.
     */
// Path: src/edu/toronto/cs/xcurator/mapping/Mapping.java
// public interface Mapping {
// 
//     /**
//      * Check if this mapping is initialized.
//      *
//      * @return
//      */
//     boolean isInitialized();
// 
//     /**
//      * Set this mapping as initialized, return success flag.
//      *
//      * @return true if successfully initialized, false if not successful.
//      */
//     boolean setInitialized();
// 
//     /**
//      * Set the base namespace context of the XML document to be transformed
//      * using this mapping. This namespace context can be overrided by individual
//      * entities.
//      *
//      * @param nsContext
//      */
//     void setBaseNamespaceContext(NsContext nsContext);
// 
//     /**
//      * Get the base namespace context of the XML document to be transformed
//      * using this mapping.
//      *
//      * @return
//      */
//     NsContext getBaseNamespaceContext();
// 
//     void addEntity(Schema schema);
// 
//     Schema getEntity(String id);
// 
//     void removeEntity(String id);
// 
//     public Map<String, Schema> getEntities();
// 
//     Iterator<Schema> getEntityIterator();
// 
//     public void removeInvalidRelations();
// 
// }


// Path: src/edu/toronto/cs/xcurator/discoverer/MappingDiscoveryStep.java
import edu.toronto.cs.xcurator.common.DataDocument;
import edu.toronto.cs.xcurator.mapping.Mapping;
import java.util.List;

/*
 *    Copyright (c) 2013, University of Toronto.
 *
 *    Licensed under the Apache License, Version 2.0 (the "License"); you may
 *    not use this file except in compliance with the License. You may obtain
 *    a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 *    License for the specific language governing permissions and limitations
 *    under the License.
 */
package edu.toronto.cs.xcurator.discoverer;


/**
 *
 * @author zhuerkan
 */
public interface MappingDiscoveryStep {

    public enum TYPE {
        BASIC('B'),
        INTERLIKNING('I'),
        KEYATTRIBUTE('K'),
        REMOVE_GROUPING_NODES('G');

        private final char id;

        TYPE(char id) {
            this.id = id;
        }

        public char getValue() {
            return id;
        }
    }

    /**
     * Processes the mapping.
     *
     * @param dataDocuments A list of XML data documents to be processed
     * @param mapping The map of processed entities. Note that the step should
     * only modify the mapping.
     */
    void process(List<DataDocument> dataDocuments, Mapping mapping);