001package org.andromda.core.configuration;
002
003import java.io.Serializable;
004import java.util.ArrayList;
005import java.util.Collection;
006
007/**
008 * Stores the repository information for each model that AndroMDA will process.
009 *
010 * @author Chad Brandon
011 */
012public class Repository
013    implements Serializable
014{
015    private static final long serialVersionUID = 34L;
016
017    /**
018     * Stores the unique name of this repository.
019     */
020    private String name;
021
022    /**
023     * Sets the unique (among other repositories)
024     * name.
025     *
026     * @param name the unique name of this repository.
027     */
028    public void setName(final String name)
029    {
030        this.name = name;
031    }
032
033    /**
034     * Gets the unique name of this repository.
035     *
036     * @return the repository name.
037     */
038    public String getName()
039    {
040        return this.name;
041    }
042
043    /**
044     * The models loaded by this repository.
045     */
046    private final Collection<Model> models = new ArrayList<Model>();
047
048    /**
049     * Adds a model that this repository will load.
050     *
051     * @param model the model to load.
052     */
053    public void addModel(final Model model)
054    {
055        model.setRepository(this);
056        this.models.add(model);
057    }
058
059    /**
060     * Gets the model instances belonging to this repository.
061     *
062     * @return the of model instances.
063     */
064    public Model[] getModels()
065    {
066        return this.models.toArray(new Model[this.models.size()]);
067    }
068}