Package hu.sztaki.ilab.longneck.bootstrap

Source Code of hu.sztaki.ilab.longneck.bootstrap.Repository

package hu.sztaki.ilab.longneck.bootstrap;

import hu.sztaki.ilab.longneck.process.*;
import hu.sztaki.ilab.longneck.process.block.BlockReference;
import hu.sztaki.ilab.longneck.process.block.GenericBlock;
import hu.sztaki.ilab.longneck.process.constraint.ConstraintReference;
import hu.sztaki.ilab.longneck.process.constraint.EntityReference;
import hu.sztaki.ilab.longneck.process.constraint.GenericConstraint;
import hu.sztaki.ilab.longneck.process.constraint.GenericEntity;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;

/**
*
* @author Molnár Péter <molnarp@sztaki.mta.hu>
*/
public class Repository {
    /** Log object. */
    protected final Logger LOG = Logger.getLogger(Repository.class);
   
    /** Entity packages. */
    protected final Map<String,EntityPackage> entities;
    /** Constraint packages. */
    protected final Map<String,ConstraintPackage> constraints;
    /** Block packages. */
    protected final Map<String,BlockPackage> blocks;
   
    public Repository() {
        entities = new HashMap<String,EntityPackage>();
        constraints = new HashMap<String,ConstraintPackage>();
        blocks = new HashMap<String,BlockPackage>();       
    }
   
    public Repository(List<LongneckPackage> packages) {
        this();
       
        for (LongneckPackage pkg : packages) {
            addPackage(pkg);
        }
    }
   
    public final void addPackage(LongneckPackage pkg) {
        switch (pkg.getType()) {
            case Block:
                blocks.put(pkg.getPackageId(), (BlockPackage) pkg);
                break;
               
            case Constraint:
                constraints.put(pkg.getPackageId(), (ConstraintPackage) pkg);
                break;
               
            case Entity:
                entities.put(pkg.getPackageId(), (EntityPackage) pkg);
                break;
        }
    }
   
    public GenericEntity getEntity(String packageid, String id, String version) {
        GenericEntity entity = null;
        try {
            entity = entities.get(packageid).getEntity(id, version);
        } catch (NullPointerException ex) {
            throw new RuntimeException("Entity package not found: " + id + ":" + version, ex);
        }
       
        if (entity == null) {
            throw new RuntimeException("Entity not found: " + id + ":" + version);
        }
       
        return entity;
    }
   
    public GenericConstraint getConstraint(String packageid, String id, String version) {
        GenericConstraint constraint = null;
        try {
            constraint = constraints.get(packageid).getConstraint(id, version);
        } catch (NullPointerException ex) {
            throw new RuntimeException("Constraint package not found: " + id + ":" + version, ex);
        }
       
        if (constraint == null) {
            throw new RuntimeException("Constraint not found: " + id + ":" + version);
        }
       
        return constraint;
    }
   
    public GenericBlock getBlock(String packageid, String id, String version) {
        GenericBlock block = null;
        try {
             block = blocks.get(packageid).getBlock(id, version);
        } catch (NullPointerException ex) {
            throw new RuntimeException("Block package not found: " + id + ":" + version, ex);
        }
       
        if (block == null) {
            throw new RuntimeException("Block not found: " + id + ":" + version);
        }
       
        return block;
    }
   
    public boolean isLoaded(FileType type, String pkg) {
        switch (type) {
            case Block:
                return blocks.containsKey(pkg);
            case Constraint:
                return constraints.containsKey(pkg);
            case Entity:
                return entities.containsKey(pkg);
            default:
                return false;               
        }
    }
   
    public void updateReferences(List<RefToDirPair> refdirlist, String repositoryPath) throws IOException {
        for (RefToDirPair refdir : refdirlist) {
            AbstractReference ref = refdir.getRef();
            SplitId splitId = new SplitId(ref.getId());
            String pkg = splitId.pkg;
            String id = splitId.id;
            String packageid = FileType.normalizePackageId(
                    FileType.getFullPackageId(refdir.getDefaultdirectory(), pkg), repositoryPath, ref);
            if (ref instanceof BlockReference) {
                ((BlockReference) ref).setReferredBlock(getBlock(packageid, id, ref.getVersion()));
            }
            else if (ref instanceof ConstraintReference) {
                ((ConstraintReference) ref).setReferredConstraint(
                        getConstraint(packageid, id, ref.getVersion()));
            }
            else if (ref instanceof EntityReference) {
                ((EntityReference) ref).setReferredEntity(getEntity(packageid, id, ref.getVersion()));
            }
        }
    }
   
    public List<LongneckPackage> getSources() {
        List<LongneckPackage> sources = new ArrayList<LongneckPackage>(
                blocks.size() + constraints.size() + entities.size());
        for (BlockPackage pak : blocks.values()) {
            sources.add(pak);
        }
        for (ConstraintPackage pak : constraints.values()) {
            sources.add(pak);
        }
        for (EntityPackage pak : entities.values()) {
            sources.add(pak);
        }
       
        return sources;
    }
}
TOP

Related Classes of hu.sztaki.ilab.longneck.bootstrap.Repository

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.