package org.jboss.windup.graph.service;
import org.jboss.windup.graph.GraphContext;
import org.jboss.windup.graph.model.ArchiveModel;
import org.jboss.windup.graph.model.LinkModel;
import org.jboss.windup.graph.model.OrganizationModel;
import org.jboss.windup.graph.model.resource.FileModel;
/**
* Adds methods for organization model.
*
* @author <a href="mailto:bradsdavis@gmail.com">Brad Davis</a>
*
*/
public class OrganizationService extends GraphService<OrganizationModel>
{
public OrganizationService(GraphContext context)
{
super(context, OrganizationModel.class);
}
/**
* Attach a {@link OrganizationModel} with the given organization to the provided {@link ArchiveModel}. If an existing Model
* exists with the provided organization, that one will be used instead.
*/
public OrganizationModel attachOrganization(ArchiveModel archiveModel, String organizationName)
{
OrganizationModel model = getUnique(getTypedQuery().has(OrganizationModel.NAME, organizationName));
if (model == null)
{
model = create();
model.setName(organizationName);
model.addArchiveModel(archiveModel);
}
else
{
return attachOrganization(model, archiveModel);
}
return model;
}
/**
* This method just attaches the {@link OrganizationModel} to the {@link FileModel}. It will only do so if this link is not already
* present.
*/
public OrganizationModel attachOrganization(OrganizationModel organizationModel, ArchiveModel archiveModel)
{
// check for duplicates
for (FileModel existingFileModel : organizationModel.getArchiveModels())
{
if (existingFileModel.equals(archiveModel))
{
return organizationModel;
}
}
organizationModel.addArchiveModel(archiveModel);
return organizationModel;
}
/**
* This method just attaches the {@link LinkModel} to the {@link OrganizationModel}. It will only do so if this link is not already
* present.
*/
public OrganizationModel attachLink(OrganizationModel organizationModel, LinkModel linkModel)
{
// check for duplicates
for (LinkModel existing : organizationModel.getLinks())
{
if (existing.equals(linkModel))
{
return organizationModel;
}
}
organizationModel.addLink(linkModel);
return organizationModel;
}
}