Skip to content

Commit

Permalink
Separate Facilities
Browse files Browse the repository at this point in the history
Fixes #1
Separate RF Operations
Fixes #15
  • Loading branch information
slominskir committed Jan 27, 2025
1 parent f514f29 commit 554190a
Show file tree
Hide file tree
Showing 15 changed files with 431 additions and 92 deletions.
82 changes: 59 additions & 23 deletions container/oracle/initdb.d/02_ddl.sql
Original file line number Diff line number Diff line change
Expand Up @@ -47,20 +47,60 @@ CREATE SEQUENCE JAM_OWNER.WORKGROUP_ID
NOCACHE
ORDER;

CREATE TABLE JAM_OWNER.WORKGROUP
(
WORKGROUP_ID INTEGER NOT NULL ,
NAME VARCHAR2(64 CHAR) NOT NULL ,
LEADER_ROLE_NAME VARCHAR2(64 CHAR) NOT NULL ,
CONSTRAINT WORKGROUP_PK PRIMARY KEY (WORKGROUP_ID)
);

CREATE TABLE JAM_OWNER.FACILITY
(
FACILITY_ID INTEGER NOT NULL,
NAME VARCHAR2(64 CHAR) NOT NULL,
PATH VARCHAR2(32 CHAR) NOT NULL,
RF_WORKGROUP_ID INTEGER NOT NULL,
BEAM_WORKGROUP_ID INTEGER NOT NULL,
WEIGHT INTEGER NOT NULL,
CONSTRAINT FACILITY_PK PRIMARY KEY (FACILITY_ID),
CONSTRAINT FACILITY_AK1 UNIQUE (NAME),
CONSTRAINT FACILITY_FK1 FOREIGN KEY (RF_WORKGROUP_ID) REFERENCES JAM_OWNER.WORKGROUP (WORKGROUP_ID),
CONSTRAINT FACILITY_FK2 FOREIGN KEY (BEAM_WORKGROUP_ID) REFERENCES JAM_OWNER.WORKGROUP (WORKGROUP_ID)
);

CREATE TABLE JAM_OWNER.RF_OPERATION
(
RF_OPERATION_ID INTEGER NOT NULL,
NAME VARCHAR2(64 CHAR) NOT NULL,
FACILITY_ID INTEGER NOT NULL,
ACTIVE_YN CHAR(1 BYTE) DEFAULT 'Y' NOT NULL,
WEIGHT INTEGER NOT NULL,
CONSTRAINT RF_OPERATION_PK PRIMARY KEY (RF_OPERATION_ID),
CONSTRAINT RF_OPERATION_CK1 CHECK (ACTIVE_YN IN ('Y', 'N'))
);

-- Should be renamed BEAM_OPERATION
CREATE TABLE JAM_OWNER.BEAM_DESTINATION
(
BEAM_DESTINATION_ID INTEGER NOT NULL ,
NAME VARCHAR2(64 CHAR) NOT NULL ,
MACHINE VARCHAR2(32 CHAR) DEFAULT 'CEBAF' NOT NULL ,
CURRENT_LIMIT_UNITS VARCHAR2(3 CHAR) DEFAULT 'uA' NOT NULL ,
ACTIVE_YN CHAR(1 BYTE) DEFAULT 'Y' NOT NULL CONSTRAINT BEAM_DESTINATION_CK1 CHECK (ACTIVE_YN IN ('Y', 'N')),
BEAM_DESTINATION_ID INTEGER NOT NULL,
--OPERATION_TYPE VARCHAR2(4 CHAR) DEFAULT 'BEAM' NOT NULL,
NAME VARCHAR2(64 CHAR) NOT NULL,
FACILITY_ID INTEGER NOT NULL,
CURRENT_LIMIT_UNITS VARCHAR2(3 CHAR) DEFAULT 'uA' NOT NULL,
ACTIVE_YN CHAR(1 BYTE) DEFAULT 'Y' NOT NULL,
WEIGHT INTEGER NOT NULL,
CONSTRAINT BEAM_DESTINATION_PK PRIMARY KEY (BEAM_DESTINATION_ID)
CONSTRAINT BEAM_DESTINATION_PK PRIMARY KEY (BEAM_DESTINATION_ID),
CONSTRAINT BEAM_DESTINATION_FK1 FOREIGN KEY (FACILITY_ID) REFERENCES JAM_OWNER.FACILITY (FACILITY_ID),
CONSTRAINT BEAM_DESTINATION_CK1 CHECK (ACTIVE_YN IN ('Y', 'N'))
--CONSTRAINT BEAM_DESTINATION_CK2 CHECK (OPERATION_TYPE IN ('BEAM', 'RF'))
);

-- Rename BEAM_AUTHORIZATION
CREATE TABLE JAM_OWNER.AUTHORIZATION
(
AUTHORIZATION_ID INTEGER NOT NULL ,
--OPERATION_TYPE VARCHAR2(4 CHAR) DEFAULT 'BEAM' NOT NULL,
MODIFIED_DATE DATE NOT NULL ,
MODIFIED_BY VARCHAR2(64 CHAR) NOT NULL ,
AUTHORIZATION_DATE DATE NOT NULL ,
Expand All @@ -69,6 +109,7 @@ CREATE TABLE JAM_OWNER.AUTHORIZATION
CONSTRAINT AUTHORIZATION_PK PRIMARY KEY (AUTHORIZATION_ID)
);

-- Rename BEAM_OPERATION_AUTHORIZATION
CREATE TABLE JAM_OWNER.DESTINATION_AUTHORIZATION
(
BEAM_DESTINATION_ID INTEGER NOT NULL ,
Expand All @@ -82,39 +123,33 @@ CREATE TABLE JAM_OWNER.DESTINATION_AUTHORIZATION
CONSTRAINT DESTINATION_AUTHORIZATION_FK2 FOREIGN KEY (AUTHORIZATION_ID) REFERENCES JAM_OWNER.AUTHORIZATION (AUTHORIZATION_ID)
);

CREATE TABLE JAM_OWNER.WORKGROUP
(
WORKGROUP_ID INTEGER NOT NULL ,
NAME VARCHAR2(64 CHAR) NOT NULL ,
LEADER_ROLE_NAME VARCHAR2(64 CHAR) NOT NULL ,
CONSTRAINT WORKGROUP_PK PRIMARY KEY (WORKGROUP_ID)
);

CREATE TABLE JAM_OWNER.CREDITED_CONTROL
(
CREDITED_CONTROL_ID INTEGER NOT NULL ,
NAME VARCHAR2(128 CHAR) NOT NULL ,
DESCRIPTION VARCHAR2(2048 CHAR) NULL ,
WORKGROUP_ID INTEGER NOT NULL ,
WEIGHT INTEGER NULL ,
VERIFICATION_FREQUENCY VARCHAR2(128 CHAR) NULL ,
COMMENTS VARCHAR2(2048) NULL ,
CREDITED_CONTROL_ID INTEGER NOT NULL,
NAME VARCHAR2(128 CHAR) NOT NULL,
DESCRIPTION VARCHAR2(2048 CHAR) NULL,
WORKGROUP_ID INTEGER NOT NULL,
WEIGHT INTEGER NULL,
VERIFICATION_FREQUENCY VARCHAR2(128 CHAR) NULL,
COMMENTS VARCHAR2(2048) NULL,
CONSTRAINT CREDITED_CONTROL_PK PRIMARY KEY (CREDITED_CONTROL_ID),
CONSTRAINT CREDITED_CONTROL_FK1 FOREIGN KEY (WORKGROUP_ID) REFERENCES JAM_OWNER.WORKGROUP(WORKGROUP_ID)
);

-- Should be renamed VERIFICATION_STATUS
CREATE TABLE JAM_OWNER.VERIFICATION
(
VERIFICATION_ID INTEGER NOT NULL ,
NAME VARCHAR2(128 CHAR) NOT NULL ,
CONSTRAINT VERIFICATION_PK PRIMARY KEY (VERIFICATION_ID)
);

-- RENAME BEAM_CONTROL_VERIFICATION
CREATE TABLE JAM_OWNER.CONTROL_VERIFICATION
(
CONTROL_VERIFICATION_ID INTEGER NOT NULL ,
CONTROL_VERIFICATION_ID INTEGER NOT NULL , -- RENAME BEAM_CONTROL_VERIFICATION_ID
CREDITED_CONTROL_ID INTEGER NULL ,
BEAM_DESTINATION_ID INTEGER NOT NULL ,
BEAM_DESTINATION_ID INTEGER NOT NULL , -- rename BEAM_OPERATION_ID
VERIFICATION_ID INTEGER NOT NULL,
VERIFICATION_DATE DATE NULL ,
VERIFIED_BY VARCHAR(64 CHAR) NULL ,
Expand All @@ -129,6 +164,7 @@ CREATE TABLE JAM_OWNER.CONTROL_VERIFICATION
CONSTRAINT CONTROL_VERIFICATION_FK3 FOREIGN KEY (VERIFICATION_ID) REFERENCES JAM_OWNER.VERIFICATION (VERIFICATION_ID) ON DELETE SET NULL
);

-- RENAME BEAM_VERIFICATION_HISTORY
CREATE TABLE JAM_OWNER.VERIFICATION_HISTORY
(
VERIFICATION_HISTORY_ID INTEGER NOT NULL ,
Expand Down
43 changes: 30 additions & 13 deletions container/oracle/initdb.d/03_default_data.sql
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,26 @@ insert into JAM_OWNER.VERIFICATION (VERIFICATION_ID, NAME) values (50, 'Provisio
insert into JAM_OWNER.VERIFICATION (VERIFICATION_ID, NAME) values (100, 'Not Verified');

-- Populate Workgroup
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (JAM_OWNER.WORKGROUP_ID.nextval, 'Group 1', 'group1Leaders');
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (JAM_OWNER.WORKGROUP_ID.nextval, 'Group 2', 'group2Leaders');
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (JAM_OWNER.WORKGROUP_ID.nextval, 'Group 3', 'group3Leaders');
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (1, 'Group 1', 'group1Leaders');
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (2, 'Group 2', 'group2Leaders');
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (3, 'Group 3', 'group3Leaders');
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (4, 'Group 4', 'group4Leaders');
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (5, 'Group 5', 'group5Leaders');
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (6, 'Group 6', 'group6Leaders');
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (7, 'Group 7', 'group7Leaders');
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (8, 'Group 8', 'group8Leaders');
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (9, 'Group 9', 'group9Leaders');
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (10, 'Group 10', 'group10Leaders');
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (11, 'Group 11', 'group11Leaders');
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (12, 'Group 12', 'group12Leaders');
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (13, 'Group 13', 'group13Leaders');

-- Populate Facilities
insert into JAM_OWNER.FACILITY (FACILITY_ID, NAME, PATH, RF_WORKGROUP_ID, BEAM_WORKGROUP_ID, WEIGHT) values (1, 'CEBAF', '/cebaf', 4, 5, 1);
insert into JAM_OWNER.FACILITY (FACILITY_ID, NAME, PATH, RF_WORKGROUP_ID, BEAM_WORKGROUP_ID, WEIGHT) values (2, 'LERF', '/lerf', 6, 7, 2);
insert into JAM_OWNER.FACILITY (FACILITY_ID, NAME, PATH, RF_WORKGROUP_ID, BEAM_WORKGROUP_ID, WEIGHT) values (3, 'UITF', '/uitf', 8, 9, 3);
insert into JAM_OWNER.FACILITY (FACILITY_ID, NAME, PATH, RF_WORKGROUP_ID, BEAM_WORKGROUP_ID, WEIGHT) values (4, 'CMTF', '/cmtf', 10, 11, 4);
insert into JAM_OWNER.FACILITY (FACILITY_ID, NAME, PATH, RF_WORKGROUP_ID, BEAM_WORKGROUP_ID, WEIGHT) values (5, 'VTA', '/vta', 12, 13, 5);

-- Populate Credited Controls
insert into JAM_OWNER.CREDITED_CONTROL (CREDITED_CONTROL_ID,NAME,DESCRIPTION,WORKGROUP_ID,WEIGHT,VERIFICATION_FREQUENCY) values (JAM_OWNER.CREDITED_CONTROL_ID.nextval,'Control 1','Control 1 Description',1,1,'1 Year');
Expand All @@ -19,16 +36,16 @@ insert into JAM_OWNER.CREDITED_CONTROL (CREDITED_CONTROL_ID,NAME,DESCRIPTION,WOR
insert into JAM_OWNER.CREDITED_CONTROL (CREDITED_CONTROL_ID,NAME,DESCRIPTION,WORKGROUP_ID,WEIGHT,VERIFICATION_FREQUENCY) values (JAM_OWNER.CREDITED_CONTROL_ID.nextval,'Control 6','Control 6 Description',1,6,'1 Year');

-- Populate Beam Destinations
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, MACHINE, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 1', 'CEBAF', 'uA', 'Y', 1);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, MACHINE, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 2', 'CEBAF', 'uA', 'Y', 2);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, MACHINE, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 3', 'CEBAF', 'uA', 'Y', 3);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, MACHINE, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 4', 'LERF', 'uA', 'Y', 4);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, MACHINE, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 5', 'LERF', 'uA', 'Y', 5);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, MACHINE, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 6', 'LERF', 'uA', 'Y', 6);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, MACHINE, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 7', 'UITF', 'uA', 'Y', 7);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, MACHINE, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 8', 'UITF', 'uA', 'Y', 8);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, MACHINE, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 9', 'UITF', 'uA', 'Y', 9);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, MACHINE, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Injector RF Operations', 'CEBAF', 'uA', 'Y', 9);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, FACILITY_ID, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 1', 1, 'uA', 'Y', 1);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, FACILITY_ID, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 2', 1, 'uA', 'Y', 2);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, FACILITY_ID, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 3', 1, 'uA', 'Y', 3);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, FACILITY_ID, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 4', 2, 'uA', 'Y', 4);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, FACILITY_ID, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 5', 2, 'uA', 'Y', 5);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, FACILITY_ID, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 6', 2, 'uA', 'Y', 6);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, FACILITY_ID, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 7', 3, 'uA', 'Y', 7);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, FACILITY_ID, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 8', 3, 'uA', 'Y', 8);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, FACILITY_ID, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Destination 9', 3, 'uA', 'Y', 9);
insert into JAM_OWNER.beam_destination (BEAM_DESTINATION_ID, NAME, FACILITY_ID, CURRENT_LIMIT_UNITS, ACTIVE_YN, WEIGHT) values(JAM_OWNER.destination_id.nextval, 'Injector RF Operations', 1, 'uA', 'Y', 9);

-- Populate Initial Control Verification
insert into JAM_OWNER.control_verification (CONTROL_VERIFICATION_ID, CREDITED_CONTROL_ID, BEAM_DESTINATION_ID, VERIFICATION_ID, VERIFICATION_DATE, VERIFIED_BY, EXPIRATION_DATE, COMMENTS, MODIFIED_BY, MODIFIED_DATE) values(JAM_OWNER.control_verification_id.nextval, 1, 1, 100, sysdate, 'admin', null, null, 'admin', sysdate);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.jlab.jam.business.session;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
Expand All @@ -10,8 +11,10 @@
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.*;
import org.jlab.jam.persistence.entity.BeamDestination;
import org.jlab.jam.persistence.entity.ControlVerification;
import org.jlab.jam.persistence.entity.Facility;

/**
* @author ryans
Expand Down Expand Up @@ -46,7 +49,7 @@ public List<BeamDestination> findActiveDestinations() {
public List<BeamDestination> findCebafDestinations() {
Query q =
em.createNativeQuery(
"select * from JAM_OWNER.beam_destination where machine = 'CEBAF' and ACTIVE_YN = 'Y' order by weight",
"select * from JAM_OWNER.beam_destination where FACILITY_ID = 1 and ACTIVE_YN = 'Y' order by weight",
BeamDestination.class);

return q.getResultList();
Expand All @@ -57,7 +60,7 @@ public List<BeamDestination> findCebafDestinations() {
public List<BeamDestination> findLerfDestinations() {
Query q =
em.createNativeQuery(
"select * from JAM_OWNER.beam_destination where machine = 'LERF' and ACTIVE_YN = 'Y' order by weight",
"select * from JAM_OWNER.beam_destination where facility_id = 2 and ACTIVE_YN = 'Y' order by weight",
BeamDestination.class);

return q.getResultList();
Expand All @@ -68,7 +71,7 @@ public List<BeamDestination> findLerfDestinations() {
public List<BeamDestination> findUitfDestinations() {
Query q =
em.createNativeQuery(
"select * from JAM_OWNER.beam_destination where machine = 'UITF' and ACTIVE_YN = 'Y' order by weight",
"select * from JAM_OWNER.beam_destination where facility_id = 3 and ACTIVE_YN = 'Y' order by weight",
BeamDestination.class);

return q.getResultList();
Expand Down Expand Up @@ -107,4 +110,32 @@ public int compare(ControlVerification o1, ControlVerification o2) {

return destination;
}

@PermitAll
public List<BeamDestination> findByFacility(Facility facility) {
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
CriteriaQuery<BeamDestination> cq = cb.createQuery(BeamDestination.class);
Root<BeamDestination> root = cq.from(BeamDestination.class);

List<Predicate> filters = new ArrayList<>();

filters.add(cb.equal(root.get("facility"), facility));

filters.add(cb.equal(root.get("active"), true));

if (!filters.isEmpty()) {
cq.where(cb.and(filters.toArray(new Predicate[] {})));
}

List<Order> orders = new ArrayList<>();
Path p0 = root.get("weight");
Order o0 = cb.desc(p0);
orders.add(o0);
cq.orderBy(orders);

cq.select(root);
TypedQuery<BeamDestination> q = getEntityManager().createQuery(cq);

return q.getResultList();
}
}
60 changes: 60 additions & 0 deletions src/main/java/org/jlab/jam/business/session/FacilityFacade.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package org.jlab.jam.business.session;

import java.util.ArrayList;
import java.util.List;
import javax.annotation.security.PermitAll;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.*;
import org.jlab.jam.persistence.entity.Facility;

/**
* @author ryans
*/
@Stateless
public class FacilityFacade extends AbstractFacade<Facility> {
@PersistenceContext(unitName = "jamPU")
private EntityManager em;

@Override
protected EntityManager getEntityManager() {
return em;
}

public FacilityFacade() {
super(Facility.class);
}

@PermitAll
public Facility findByPath(String pathInfo) {
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
CriteriaQuery<Facility> cq = cb.createQuery(Facility.class);
Root<Facility> root = cq.from(Facility.class);

List<Predicate> filters = new ArrayList<>();

filters.add(cb.equal(root.get("path"), pathInfo));

if (!filters.isEmpty()) {
cq.where(cb.and(filters.toArray(new Predicate[] {})));
}

cq.select(root);
TypedQuery<Facility> q = getEntityManager().createQuery(cq).setFirstResult(0).setMaxResults(2);
List<Facility> recordList = q.getResultList();

Facility facility = null;

if (recordList.size() > 1) {
throw new RuntimeException("Duplicate facility paths configured");
}

if (recordList.size() > 0) {
facility = recordList.get(0);
}

return facility;
}
}
24 changes: 13 additions & 11 deletions src/main/java/org/jlab/jam/persistence/entity/BeamDestination.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import java.util.List;
import java.util.Objects;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.jlab.jam.persistence.view.BeamDestinationVerification;
import org.jlab.smoothness.persistence.util.YnStringToBoolean;
Expand All @@ -16,9 +17,10 @@ public class BeamDestination {
@Column(name = "BEAM_DESTINATION_ID", nullable = false, precision = 0)
private BigInteger beamDestinationId;

@Basic
@Column(name = "MACHINE", nullable = false, length = 32)
private String machine;
@NotNull
@ManyToOne
@JoinColumn(name = "FACILITY_ID", referencedColumnName = "FACILITY_ID", nullable = false)
private Facility facility;

@Basic
@Column(name = "CURRENT_LIMIT_UNITS", nullable = false, length = 3)
Expand Down Expand Up @@ -74,12 +76,12 @@ public void setBeamDestinationId(BigInteger beamDestinationId) {
this.beamDestinationId = beamDestinationId;
}

public String getMachine() {
return machine;
public Facility getFacility() {
return facility;
}

public void setMachine(String machine) {
this.machine = machine;
public void setFacility(Facility facility) {
this.facility = facility;
}

public String getCurrentLimitUnits() {
Expand All @@ -104,23 +106,23 @@ public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
BeamDestination that = (BeamDestination) o;
return Objects.equals(beamDestinationId, that.beamDestinationId)
&& Objects.equals(machine, that.machine)
&& Objects.equals(facility, that.facility)
&& Objects.equals(currentLimitUnits, that.currentLimitUnits)
&& Objects.equals(name, that.name);
}

@Override
public int hashCode() {
return Objects.hash(beamDestinationId, machine, currentLimitUnits, name);
return Objects.hash(beamDestinationId, facility, currentLimitUnits, name);
}

@Override
public String toString() {
return "BeamDestination{"
+ "beamDestinationId="
+ beamDestinationId
+ ", machine='"
+ machine
+ ", facility='"
+ facility
+ '\''
+ ", currentLimitUnits='"
+ currentLimitUnits
Expand Down
Loading

0 comments on commit 554190a

Please sign in to comment.