package com.processpuzzle.party.artifact;
import com.processpuzzle.application.configuration.domain.ConfigurationSetUpException;
import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext;
import com.processpuzzle.application.domain.Application;
import com.processpuzzle.artifact.domain.DefaultArtifactRepository;
import com.processpuzzle.artifact_type.domain.ArtifactType;
import com.processpuzzle.artifact_type.domain.ArtifactTypeFactory;
import com.processpuzzle.artifact_type.domain.ArtifactTypeRepository;
import com.processpuzzle.artifact_type.domain.ArtifactViewType;
import com.processpuzzle.artifact_type_group.domain.ArtifactTypeGroup;
import com.processpuzzle.artifact_type_group.domain.ArtifactTypeGroupFactory;
import com.processpuzzle.artifact_type_group.domain.ArtifactTypeGroupRepository;
import com.processpuzzle.party.domain.Company;
import com.processpuzzle.party.domain.CompanyRepository;
import com.processpuzzle.party.domain.Organization;
import com.processpuzzle.party.domain.OrganizationUnit;
import com.processpuzzle.party.domain.OrganizationUnitFactory;
import com.processpuzzle.party.domain.PartyRelationshipFactory;
import com.processpuzzle.party.domain.PartyRepository;
import com.processpuzzle.party.partyrelationshiptype.domain.PartyRelationshipType;
import com.processpuzzle.party.partyrelationshiptype.domain.PartyRelationshipTypeFactory;
import com.processpuzzle.party.partyrelationshiptype.domain.PartyRelationshipTypeRepository;
import com.processpuzzle.party.partyrelationshiptype.domain.PartyRoleType;
import com.processpuzzle.party.partyrelationshiptype.domain.PartyRoleTypeFactory;
import com.processpuzzle.party.partyrelationshiptype.domain.PartyRoleTypeRepository;
import com.processpuzzle.persistence.domain.DefaultUnitOfWork;
// CSAK A PIROS HIBAK LETTEK KISZEDVE!!! ATIRANDO!
public class OrganizationDataSheetFixture {
public static String CIB_COMPANY_NAME = "CIB Rt.";
public static String CIB_GODOLLOI_BRANCH_NAME = "Gödöllői fiók";
public static String CIB_GYONGYOSI_BRANCH_NAME = "Gyöngyösi fiók";
private static ProcessPuzzleContext config = null;
private static DefaultArtifactRepository artifactRepository = null;
private static OrganizationDataSheetFixture fixtureInstance = null;
private static Organization organization = null;
private static Company company = null;
private static OrganizationUnit bankFiok1 = null;
private static OrganizationUnit bankFiok2 = null;
private static OrganizationUnitDataSheet organizationDataSheet = null;
private static PartyRepository partyRepository;
private static CompanyRepository companyRepository;
private PartyRelationshipTypeRepository relationshipTypeRepository;
private PartyRoleTypeRepository roleTypeRepository;
private PartyRoleType companyRoleType;
private PartyRoleType organizationUnitRoleType;
private PartyRelationshipType organizationHierarchy;
private ArtifactTypeRepository artifactTypeRepository;
private ArtifactType type;
private ArtifactTypeGroupFactory artifactTypeGroupFactory;
private ArtifactTypeGroupRepository artifactTypeGroupRepository;
private ArtifactTypeGroup group;
private OrganizationUnitFactory organizationUnitFactory;
private OrganizationUnitDataSheetFactory organizationUnitDataSheetFactory;
private ArtifactTypeFactory artifactTypeFactory;
public static OrganizationDataSheetFixture getInstance() {
if (fixtureInstance == null) {
return new OrganizationDataSheetFixture();
}
return fixtureInstance;
}
public void setUp() {
DefaultUnitOfWork work = new DefaultUnitOfWork(true);
// config = ProcessPuzzleContext.createInstance( ConfigurationConstants.CONFIGURATION_DESCRIPTOR_FILE );
config = ProcessPuzzleContext.getInstance();
try {
config.setUp( Application.Action.start );
} catch (ConfigurationSetUpException e) {
e.printStackTrace();
}
organizationUnitFactory = config.getEntityFactory( OrganizationUnitFactory.class );
organizationUnitDataSheetFactory = config.getEntityFactory( OrganizationUnitDataSheetFactory.class );
artifactTypeFactory = config.getEntityFactory( ArtifactTypeFactory.class );
group = artifactTypeGroupFactory.create( "Group" );
artifactTypeGroupFactory = config.getEntityFactory( ArtifactTypeGroupFactory.class );
artifactTypeGroupRepository = config.getRepository(ArtifactTypeGroupRepository.class );
artifactTypeGroupRepository.addArtifactTypeGroup(work, group);
type = artifactTypeFactory.create("CompanyDataSheet", "Group");
ArtifactViewType viewType = ArtifactTypeFactory.createArtifactViewType("name", "presentationUri");
//viewType.setViewClassName("com.itcodex.objectpuzzle.party.artifact.CompanyDataSheet_PropertyView");
type.addViewType(viewType);
artifactTypeRepository = (ArtifactTypeRepository) config.getRepository(ArtifactTypeRepository.class);
artifactTypeRepository.addArtifactType(work, type);
// artifactTypeRepository.addArtifactViewType(viewType);
artifactRepository = (DefaultArtifactRepository) config.getRepository(DefaultArtifactRepository.class);
relationshipTypeRepository = (PartyRelationshipTypeRepository) config.getRepository(PartyRelationshipTypeRepository.class);
roleTypeRepository = (PartyRoleTypeRepository) config.getRepository(PartyRoleTypeRepository.class);
companyRepository = (CompanyRepository) config.getRepository(CompanyRepository.class);
partyRepository = (PartyRepository) config.getRepository(PartyRepository.class);
organizationDataSheet = organizationUnitDataSheetFactory.create( CIB_COMPANY_NAME );
organization = organizationDataSheet.getOrganizationUnit();
bankFiok1 = organizationUnitFactory.create(CIB_GODOLLOI_BRANCH_NAME);
bankFiok2 = organizationUnitFactory.create(CIB_GYONGYOSI_BRANCH_NAME);
companyRoleType = PartyRoleTypeFactory.create("SuperiorOrganization", "", company.getType() );
roleTypeRepository.addPartyRoleType(work, companyRoleType);
organizationUnitRoleType = PartyRoleTypeFactory.create("InferiorOrganization", "", organization.getType() );
roleTypeRepository.addPartyRoleType(work, organizationUnitRoleType);
organizationHierarchy = PartyRelationshipTypeFactory.create("OrganizationHierarchy", companyRoleType, organizationUnitRoleType);
relationshipTypeRepository.add(work, organizationHierarchy);
artifactRepository.add(work, organizationDataSheet);
partyRepository.addOrganizationUnit(work, bankFiok1);
partyRepository.addOrganizationUnit(work, bankFiok2);
PartyRelationshipFactory.createPartyRelationship(organizationHierarchy, /* */company, bankFiok1);
PartyRelationshipFactory.createPartyRelationship(organizationHierarchy, /* */company, bankFiok2);
// partyRepository.addPartyRelationship(work, prs1);
// partyRepository.addPartyRelationship(work, prs2);
work.finish();
}
public void tearDown() {
DefaultUnitOfWork work = new DefaultUnitOfWork(true);
// try {
// partyRepository.deletePartyRelationship(work, prs1);
// partyRepository.deletePartyRelationship(work, prs2);
// } catch (Exception e) {}
partyRepository.deleteOrganizationUnit(work, bankFiok1);
partyRepository.deleteOrganizationUnit(work, bankFiok2);
// companyDataSheet.setCompany(null);
artifactRepository.delete(work, organizationDataSheet);
companyRepository.deleteCompany(work, company);
relationshipTypeRepository.deletePartyRelationshipType(work, organizationHierarchy);
roleTypeRepository.deletePartyRoleType(work, companyRoleType);
roleTypeRepository.deletePartyRoleType(work, organizationUnitRoleType);
config = null;
artifactTypeGroupRepository.deleteArtifactTypeGroup(work, group);
artifactTypeRepository.deleteArtifactType(work, type);
artifactRepository = null;
work.finish();
}
public static OrganizationUnitDataSheet getCompanyDataSheet() {
return organizationDataSheet;
}
public static DefaultArtifactRepository getArtifactRepository() {
return artifactRepository;
}
public static OrganizationUnit getBankFiok1() {
DefaultUnitOfWork work = new DefaultUnitOfWork(true);
OrganizationUnit oUnit = partyRepository.findOrganizationUnitById(work, bankFiok1.getId());
work.finish();
return oUnit;
}
}