Skip to content

Commit 554190a

Browse files
committed
Separate Facilities
Fixes #1 Separate RF Operations Fixes #15
1 parent f514f29 commit 554190a

File tree

15 files changed

+431
-92
lines changed

15 files changed

+431
-92
lines changed

container/oracle/initdb.d/02_ddl.sql

Lines changed: 59 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -47,20 +47,60 @@ CREATE SEQUENCE JAM_OWNER.WORKGROUP_ID
4747
NOCACHE
4848
ORDER;
4949

50+
CREATE TABLE JAM_OWNER.WORKGROUP
51+
(
52+
WORKGROUP_ID INTEGER NOT NULL ,
53+
NAME VARCHAR2(64 CHAR) NOT NULL ,
54+
LEADER_ROLE_NAME VARCHAR2(64 CHAR) NOT NULL ,
55+
CONSTRAINT WORKGROUP_PK PRIMARY KEY (WORKGROUP_ID)
56+
);
57+
58+
CREATE TABLE JAM_OWNER.FACILITY
59+
(
60+
FACILITY_ID INTEGER NOT NULL,
61+
NAME VARCHAR2(64 CHAR) NOT NULL,
62+
PATH VARCHAR2(32 CHAR) NOT NULL,
63+
RF_WORKGROUP_ID INTEGER NOT NULL,
64+
BEAM_WORKGROUP_ID INTEGER NOT NULL,
65+
WEIGHT INTEGER NOT NULL,
66+
CONSTRAINT FACILITY_PK PRIMARY KEY (FACILITY_ID),
67+
CONSTRAINT FACILITY_AK1 UNIQUE (NAME),
68+
CONSTRAINT FACILITY_FK1 FOREIGN KEY (RF_WORKGROUP_ID) REFERENCES JAM_OWNER.WORKGROUP (WORKGROUP_ID),
69+
CONSTRAINT FACILITY_FK2 FOREIGN KEY (BEAM_WORKGROUP_ID) REFERENCES JAM_OWNER.WORKGROUP (WORKGROUP_ID)
70+
);
71+
72+
CREATE TABLE JAM_OWNER.RF_OPERATION
73+
(
74+
RF_OPERATION_ID INTEGER NOT NULL,
75+
NAME VARCHAR2(64 CHAR) NOT NULL,
76+
FACILITY_ID INTEGER NOT NULL,
77+
ACTIVE_YN CHAR(1 BYTE) DEFAULT 'Y' NOT NULL,
78+
WEIGHT INTEGER NOT NULL,
79+
CONSTRAINT RF_OPERATION_PK PRIMARY KEY (RF_OPERATION_ID),
80+
CONSTRAINT RF_OPERATION_CK1 CHECK (ACTIVE_YN IN ('Y', 'N'))
81+
);
82+
83+
-- Should be renamed BEAM_OPERATION
5084
CREATE TABLE JAM_OWNER.BEAM_DESTINATION
5185
(
52-
BEAM_DESTINATION_ID INTEGER NOT NULL ,
53-
NAME VARCHAR2(64 CHAR) NOT NULL ,
54-
MACHINE VARCHAR2(32 CHAR) DEFAULT 'CEBAF' NOT NULL ,
55-
CURRENT_LIMIT_UNITS VARCHAR2(3 CHAR) DEFAULT 'uA' NOT NULL ,
56-
ACTIVE_YN CHAR(1 BYTE) DEFAULT 'Y' NOT NULL CONSTRAINT BEAM_DESTINATION_CK1 CHECK (ACTIVE_YN IN ('Y', 'N')),
86+
BEAM_DESTINATION_ID INTEGER NOT NULL,
87+
--OPERATION_TYPE VARCHAR2(4 CHAR) DEFAULT 'BEAM' NOT NULL,
88+
NAME VARCHAR2(64 CHAR) NOT NULL,
89+
FACILITY_ID INTEGER NOT NULL,
90+
CURRENT_LIMIT_UNITS VARCHAR2(3 CHAR) DEFAULT 'uA' NOT NULL,
91+
ACTIVE_YN CHAR(1 BYTE) DEFAULT 'Y' NOT NULL,
5792
WEIGHT INTEGER NOT NULL,
58-
CONSTRAINT BEAM_DESTINATION_PK PRIMARY KEY (BEAM_DESTINATION_ID)
93+
CONSTRAINT BEAM_DESTINATION_PK PRIMARY KEY (BEAM_DESTINATION_ID),
94+
CONSTRAINT BEAM_DESTINATION_FK1 FOREIGN KEY (FACILITY_ID) REFERENCES JAM_OWNER.FACILITY (FACILITY_ID),
95+
CONSTRAINT BEAM_DESTINATION_CK1 CHECK (ACTIVE_YN IN ('Y', 'N'))
96+
--CONSTRAINT BEAM_DESTINATION_CK2 CHECK (OPERATION_TYPE IN ('BEAM', 'RF'))
5997
);
6098

99+
-- Rename BEAM_AUTHORIZATION
61100
CREATE TABLE JAM_OWNER.AUTHORIZATION
62101
(
63102
AUTHORIZATION_ID INTEGER NOT NULL ,
103+
--OPERATION_TYPE VARCHAR2(4 CHAR) DEFAULT 'BEAM' NOT NULL,
64104
MODIFIED_DATE DATE NOT NULL ,
65105
MODIFIED_BY VARCHAR2(64 CHAR) NOT NULL ,
66106
AUTHORIZATION_DATE DATE NOT NULL ,
@@ -69,6 +109,7 @@ CREATE TABLE JAM_OWNER.AUTHORIZATION
69109
CONSTRAINT AUTHORIZATION_PK PRIMARY KEY (AUTHORIZATION_ID)
70110
);
71111

112+
-- Rename BEAM_OPERATION_AUTHORIZATION
72113
CREATE TABLE JAM_OWNER.DESTINATION_AUTHORIZATION
73114
(
74115
BEAM_DESTINATION_ID INTEGER NOT NULL ,
@@ -82,39 +123,33 @@ CREATE TABLE JAM_OWNER.DESTINATION_AUTHORIZATION
82123
CONSTRAINT DESTINATION_AUTHORIZATION_FK2 FOREIGN KEY (AUTHORIZATION_ID) REFERENCES JAM_OWNER.AUTHORIZATION (AUTHORIZATION_ID)
83124
);
84125

85-
CREATE TABLE JAM_OWNER.WORKGROUP
86-
(
87-
WORKGROUP_ID INTEGER NOT NULL ,
88-
NAME VARCHAR2(64 CHAR) NOT NULL ,
89-
LEADER_ROLE_NAME VARCHAR2(64 CHAR) NOT NULL ,
90-
CONSTRAINT WORKGROUP_PK PRIMARY KEY (WORKGROUP_ID)
91-
);
92-
93126
CREATE TABLE JAM_OWNER.CREDITED_CONTROL
94127
(
95-
CREDITED_CONTROL_ID INTEGER NOT NULL ,
96-
NAME VARCHAR2(128 CHAR) NOT NULL ,
97-
DESCRIPTION VARCHAR2(2048 CHAR) NULL ,
98-
WORKGROUP_ID INTEGER NOT NULL ,
99-
WEIGHT INTEGER NULL ,
100-
VERIFICATION_FREQUENCY VARCHAR2(128 CHAR) NULL ,
101-
COMMENTS VARCHAR2(2048) NULL ,
128+
CREDITED_CONTROL_ID INTEGER NOT NULL,
129+
NAME VARCHAR2(128 CHAR) NOT NULL,
130+
DESCRIPTION VARCHAR2(2048 CHAR) NULL,
131+
WORKGROUP_ID INTEGER NOT NULL,
132+
WEIGHT INTEGER NULL,
133+
VERIFICATION_FREQUENCY VARCHAR2(128 CHAR) NULL,
134+
COMMENTS VARCHAR2(2048) NULL,
102135
CONSTRAINT CREDITED_CONTROL_PK PRIMARY KEY (CREDITED_CONTROL_ID),
103136
CONSTRAINT CREDITED_CONTROL_FK1 FOREIGN KEY (WORKGROUP_ID) REFERENCES JAM_OWNER.WORKGROUP(WORKGROUP_ID)
104137
);
105138

139+
-- Should be renamed VERIFICATION_STATUS
106140
CREATE TABLE JAM_OWNER.VERIFICATION
107141
(
108142
VERIFICATION_ID INTEGER NOT NULL ,
109143
NAME VARCHAR2(128 CHAR) NOT NULL ,
110144
CONSTRAINT VERIFICATION_PK PRIMARY KEY (VERIFICATION_ID)
111145
);
112146

147+
-- RENAME BEAM_CONTROL_VERIFICATION
113148
CREATE TABLE JAM_OWNER.CONTROL_VERIFICATION
114149
(
115-
CONTROL_VERIFICATION_ID INTEGER NOT NULL ,
150+
CONTROL_VERIFICATION_ID INTEGER NOT NULL , -- RENAME BEAM_CONTROL_VERIFICATION_ID
116151
CREDITED_CONTROL_ID INTEGER NULL ,
117-
BEAM_DESTINATION_ID INTEGER NOT NULL ,
152+
BEAM_DESTINATION_ID INTEGER NOT NULL , -- rename BEAM_OPERATION_ID
118153
VERIFICATION_ID INTEGER NOT NULL,
119154
VERIFICATION_DATE DATE NULL ,
120155
VERIFIED_BY VARCHAR(64 CHAR) NULL ,
@@ -129,6 +164,7 @@ CREATE TABLE JAM_OWNER.CONTROL_VERIFICATION
129164
CONSTRAINT CONTROL_VERIFICATION_FK3 FOREIGN KEY (VERIFICATION_ID) REFERENCES JAM_OWNER.VERIFICATION (VERIFICATION_ID) ON DELETE SET NULL
130165
);
131166

167+
-- RENAME BEAM_VERIFICATION_HISTORY
132168
CREATE TABLE JAM_OWNER.VERIFICATION_HISTORY
133169
(
134170
VERIFICATION_HISTORY_ID INTEGER NOT NULL ,

container/oracle/initdb.d/03_default_data.sql

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,26 @@ insert into JAM_OWNER.VERIFICATION (VERIFICATION_ID, NAME) values (50, 'Provisio
66
insert into JAM_OWNER.VERIFICATION (VERIFICATION_ID, NAME) values (100, 'Not Verified');
77

88
-- Populate Workgroup
9-
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (JAM_OWNER.WORKGROUP_ID.nextval, 'Group 1', 'group1Leaders');
10-
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (JAM_OWNER.WORKGROUP_ID.nextval, 'Group 2', 'group2Leaders');
11-
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (JAM_OWNER.WORKGROUP_ID.nextval, 'Group 3', 'group3Leaders');
9+
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (1, 'Group 1', 'group1Leaders');
10+
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (2, 'Group 2', 'group2Leaders');
11+
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (3, 'Group 3', 'group3Leaders');
12+
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (4, 'Group 4', 'group4Leaders');
13+
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (5, 'Group 5', 'group5Leaders');
14+
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (6, 'Group 6', 'group6Leaders');
15+
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (7, 'Group 7', 'group7Leaders');
16+
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (8, 'Group 8', 'group8Leaders');
17+
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (9, 'Group 9', 'group9Leaders');
18+
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (10, 'Group 10', 'group10Leaders');
19+
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (11, 'Group 11', 'group11Leaders');
20+
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (12, 'Group 12', 'group12Leaders');
21+
insert into JAM_OWNER.WORKGROUP (WORKGROUP_ID, NAME, LEADER_ROLE_NAME) values (13, 'Group 13', 'group13Leaders');
22+
23+
-- Populate Facilities
24+
insert into JAM_OWNER.FACILITY (FACILITY_ID, NAME, PATH, RF_WORKGROUP_ID, BEAM_WORKGROUP_ID, WEIGHT) values (1, 'CEBAF', '/cebaf', 4, 5, 1);
25+
insert into JAM_OWNER.FACILITY (FACILITY_ID, NAME, PATH, RF_WORKGROUP_ID, BEAM_WORKGROUP_ID, WEIGHT) values (2, 'LERF', '/lerf', 6, 7, 2);
26+
insert into JAM_OWNER.FACILITY (FACILITY_ID, NAME, PATH, RF_WORKGROUP_ID, BEAM_WORKGROUP_ID, WEIGHT) values (3, 'UITF', '/uitf', 8, 9, 3);
27+
insert into JAM_OWNER.FACILITY (FACILITY_ID, NAME, PATH, RF_WORKGROUP_ID, BEAM_WORKGROUP_ID, WEIGHT) values (4, 'CMTF', '/cmtf', 10, 11, 4);
28+
insert into JAM_OWNER.FACILITY (FACILITY_ID, NAME, PATH, RF_WORKGROUP_ID, BEAM_WORKGROUP_ID, WEIGHT) values (5, 'VTA', '/vta', 12, 13, 5);
1229

1330
-- Populate Credited Controls
1431
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');
@@ -19,16 +36,16 @@ insert into JAM_OWNER.CREDITED_CONTROL (CREDITED_CONTROL_ID,NAME,DESCRIPTION,WOR
1936
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');
2037

2138
-- Populate Beam Destinations
22-
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);
23-
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);
24-
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);
25-
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);
26-
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);
27-
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);
28-
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);
29-
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);
30-
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);
31-
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);
39+
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);
40+
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);
41+
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);
42+
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);
43+
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);
44+
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);
45+
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);
46+
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);
47+
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);
48+
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);
3249

3350
-- Populate Initial Control Verification
3451
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);

src/main/java/org/jlab/jam/business/session/BeamDestinationFacade.java

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.jlab.jam.business.session;
22

33
import java.math.BigInteger;
4+
import java.util.ArrayList;
45
import java.util.Collections;
56
import java.util.Comparator;
67
import java.util.List;
@@ -10,8 +11,10 @@
1011
import javax.persistence.PersistenceContext;
1112
import javax.persistence.Query;
1213
import javax.persistence.TypedQuery;
14+
import javax.persistence.criteria.*;
1315
import org.jlab.jam.persistence.entity.BeamDestination;
1416
import org.jlab.jam.persistence.entity.ControlVerification;
17+
import org.jlab.jam.persistence.entity.Facility;
1518

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

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

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

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

108111
return destination;
109112
}
113+
114+
@PermitAll
115+
public List<BeamDestination> findByFacility(Facility facility) {
116+
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
117+
CriteriaQuery<BeamDestination> cq = cb.createQuery(BeamDestination.class);
118+
Root<BeamDestination> root = cq.from(BeamDestination.class);
119+
120+
List<Predicate> filters = new ArrayList<>();
121+
122+
filters.add(cb.equal(root.get("facility"), facility));
123+
124+
filters.add(cb.equal(root.get("active"), true));
125+
126+
if (!filters.isEmpty()) {
127+
cq.where(cb.and(filters.toArray(new Predicate[] {})));
128+
}
129+
130+
List<Order> orders = new ArrayList<>();
131+
Path p0 = root.get("weight");
132+
Order o0 = cb.desc(p0);
133+
orders.add(o0);
134+
cq.orderBy(orders);
135+
136+
cq.select(root);
137+
TypedQuery<BeamDestination> q = getEntityManager().createQuery(cq);
138+
139+
return q.getResultList();
140+
}
110141
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package org.jlab.jam.business.session;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import javax.annotation.security.PermitAll;
6+
import javax.ejb.Stateless;
7+
import javax.persistence.EntityManager;
8+
import javax.persistence.PersistenceContext;
9+
import javax.persistence.TypedQuery;
10+
import javax.persistence.criteria.*;
11+
import org.jlab.jam.persistence.entity.Facility;
12+
13+
/**
14+
* @author ryans
15+
*/
16+
@Stateless
17+
public class FacilityFacade extends AbstractFacade<Facility> {
18+
@PersistenceContext(unitName = "jamPU")
19+
private EntityManager em;
20+
21+
@Override
22+
protected EntityManager getEntityManager() {
23+
return em;
24+
}
25+
26+
public FacilityFacade() {
27+
super(Facility.class);
28+
}
29+
30+
@PermitAll
31+
public Facility findByPath(String pathInfo) {
32+
CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
33+
CriteriaQuery<Facility> cq = cb.createQuery(Facility.class);
34+
Root<Facility> root = cq.from(Facility.class);
35+
36+
List<Predicate> filters = new ArrayList<>();
37+
38+
filters.add(cb.equal(root.get("path"), pathInfo));
39+
40+
if (!filters.isEmpty()) {
41+
cq.where(cb.and(filters.toArray(new Predicate[] {})));
42+
}
43+
44+
cq.select(root);
45+
TypedQuery<Facility> q = getEntityManager().createQuery(cq).setFirstResult(0).setMaxResults(2);
46+
List<Facility> recordList = q.getResultList();
47+
48+
Facility facility = null;
49+
50+
if (recordList.size() > 1) {
51+
throw new RuntimeException("Duplicate facility paths configured");
52+
}
53+
54+
if (recordList.size() > 0) {
55+
facility = recordList.get(0);
56+
}
57+
58+
return facility;
59+
}
60+
}

src/main/java/org/jlab/jam/persistence/entity/BeamDestination.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.List;
55
import java.util.Objects;
66
import javax.persistence.*;
7+
import javax.validation.constraints.NotNull;
78
import javax.validation.constraints.Size;
89
import org.jlab.jam.persistence.view.BeamDestinationVerification;
910
import org.jlab.smoothness.persistence.util.YnStringToBoolean;
@@ -16,9 +17,10 @@ public class BeamDestination {
1617
@Column(name = "BEAM_DESTINATION_ID", nullable = false, precision = 0)
1718
private BigInteger beamDestinationId;
1819

19-
@Basic
20-
@Column(name = "MACHINE", nullable = false, length = 32)
21-
private String machine;
20+
@NotNull
21+
@ManyToOne
22+
@JoinColumn(name = "FACILITY_ID", referencedColumnName = "FACILITY_ID", nullable = false)
23+
private Facility facility;
2224

2325
@Basic
2426
@Column(name = "CURRENT_LIMIT_UNITS", nullable = false, length = 3)
@@ -74,12 +76,12 @@ public void setBeamDestinationId(BigInteger beamDestinationId) {
7476
this.beamDestinationId = beamDestinationId;
7577
}
7678

77-
public String getMachine() {
78-
return machine;
79+
public Facility getFacility() {
80+
return facility;
7981
}
8082

81-
public void setMachine(String machine) {
82-
this.machine = machine;
83+
public void setFacility(Facility facility) {
84+
this.facility = facility;
8385
}
8486

8587
public String getCurrentLimitUnits() {
@@ -104,23 +106,23 @@ public boolean equals(Object o) {
104106
if (o == null || getClass() != o.getClass()) return false;
105107
BeamDestination that = (BeamDestination) o;
106108
return Objects.equals(beamDestinationId, that.beamDestinationId)
107-
&& Objects.equals(machine, that.machine)
109+
&& Objects.equals(facility, that.facility)
108110
&& Objects.equals(currentLimitUnits, that.currentLimitUnits)
109111
&& Objects.equals(name, that.name);
110112
}
111113

112114
@Override
113115
public int hashCode() {
114-
return Objects.hash(beamDestinationId, machine, currentLimitUnits, name);
116+
return Objects.hash(beamDestinationId, facility, currentLimitUnits, name);
115117
}
116118

117119
@Override
118120
public String toString() {
119121
return "BeamDestination{"
120122
+ "beamDestinationId="
121123
+ beamDestinationId
122-
+ ", machine='"
123-
+ machine
124+
+ ", facility='"
125+
+ facility
124126
+ '\''
125127
+ ", currentLimitUnits='"
126128
+ currentLimitUnits

0 commit comments

Comments
 (0)