package org.jboss.windup.rules.apps.javaee.model;
import java.util.Map;
import org.jboss.windup.graph.MapInAdjacentProperties;
import org.jboss.windup.graph.model.ProjectModel;
import org.jboss.windup.graph.model.WindupVertexFrame;
import com.tinkerpop.blueprints.Direction;
import com.tinkerpop.frames.Adjacency;
import com.tinkerpop.frames.Property;
import com.tinkerpop.frames.modules.typedgraph.TypeValue;
/**
* Contains metadata related to JPA Persistence Units.
*
* @author <a href="mailto:bradsdavis@gmail.com">Brad Davis</a>
*
*/
@TypeValue(JPAPersistenceUnitModel.TYPE)
public interface JPAPersistenceUnitModel extends WindupVertexFrame, HasApplications
{
String TYPE = "JPAPersistenceUnit";
String DATASOURCE = "datasource";
String NAME = TYPE + "-name";
String APPLICATION = "application";
/**
* Contains the application in which this JPA persistence unit was discovered.
*/
@Adjacency(label = APPLICATION, direction = Direction.OUT)
ProjectModel getApplication();
/**
* Contains the application in which this JPA persistence unit was discovered.
*/
@Adjacency(label = APPLICATION, direction = Direction.OUT)
void setApplication(ProjectModel projectModel);
/**
* Contains persistence unit name
*/
@Property(NAME)
String getName();
/**
* Contains persistence unit name
*/
@Property(NAME)
void setName(String name);
/**
* Contains a link back to the {@link DataSourceModel}
*/
@Adjacency(label = DATASOURCE, direction = Direction.OUT)
Iterable<DataSourceModel> getDataSources();
/**
* Contains a link back to the {@link DataSourceModel}
*/
@Adjacency(label = DATASOURCE, direction = Direction.OUT)
void addDataSource(DataSourceModel dataSource);
/**
* Contains a link back to the {@link JPAConfigurationFileModel} containing these properties
*/
@Adjacency(label = JPAConfigurationFileModel.JPA_PERSISTENCE_UNIT, direction = Direction.IN)
JPAConfigurationFileModel getJPAConfigurationFileModel();
/**
* Contains the jpa persistence unit properties
*/
@MapInAdjacentProperties(label = "persistenceUnitProperties")
Map<String, String> getProperties();
/**
* Contains the jpa persistence unit properties
*/
@MapInAdjacentProperties(label = "persistenceUnitProperties")
void setProperties(Map<String, String> map);
}