]> git.mxchange.org Git - addressbook-ejb.git/blob
6f25bcf38edcf2ed9642ba8b925bea81aba7e534
[addressbook-ejb.git] /
1 /*
2  * Copyright (C) 2020 Free Software Foundation
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Affero General Public License as
6  * published by the Free Software Foundation, either version 3 of the
7  * License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU Affero General Public License for more details.
13  *
14  * You should have received a copy of the GNU Affero General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  */
17 package org.mxchange.jcontactsbusiness.model.basicdata;
18
19 import java.text.MessageFormat;
20 import java.util.Date;
21 import java.util.List;
22 import java.util.Objects;
23 import javax.ejb.EJB;
24 import javax.ejb.Stateless;
25 import org.mxchange.addressbook.database.BaseAddressbookDatabaseBean;
26 import org.mxchange.jcontactsbusiness.exceptions.basicdata.BasicDataAlreadyAddedException;
27 import org.mxchange.jcontactsbusiness.model.employee.Employable;
28 import org.mxchange.jcontactsbusiness.model.headquarter.Headquarter;
29 import org.mxchange.jusercore.model.user.User;
30
31 /**
32  * An administrative stateless session bean for business data
33  * <p>
34  * @author Roland Häder<roland@mxchange.org>
35  */
36 @Stateless (name = "adminBasicCompanyData", description = "An administrative statless bean for handling business data (all)")
37 public class AddressbookAdminBusinessDataSessionBean extends BaseAddressbookDatabaseBean implements AdminBasicCompanyDataSessionBeanRemote {
38
39         /**
40          * Serial number
41          */
42         private static final long serialVersionUID = 56_389_504_892_184_572L;
43
44         /**
45          * Administrative EJB
46          */
47         @EJB
48         private BasicCompanyDataSessionBeanRemote businessDataBean;
49
50         /**
51          * Default constructor
52          */
53         public AddressbookAdminBusinessDataSessionBean () {
54                 // Call super constructor
55                 super();
56         }
57
58         @Override
59         public BasicData addBusinessBasicData (final BasicData basicData) throws BasicDataAlreadyAddedException {
60                 // Trace message
61                 this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addBusinessBasicData: basicData={1} - CALLED!", this.getClass().getSimpleName(), basicData)); //NOI18N
62
63                 // Is the instance set?
64                 if (null == basicData) {
65                         // Throw NPE
66                         throw new NullPointerException("basicData is null"); //NOI18N
67                 } else if (basicData.getBasicDataId() != null) {
68                         // Should be null
69                         throw new IllegalArgumentException(MessageFormat.format("basicData.basicDataId={0} - is not null", basicData.getBasicDataId())); //NOI18N
70                 } else if (this.isSameCompanyNameAdded(basicData)) {
71                         // Throw exception
72                         throw new BasicDataAlreadyAddedException(basicData);
73                 }
74
75                 // Now add current date
76                 basicData.setCompanyCreated(new Date());
77
78                 // Is there a owner set?
79                 if (basicData.getCompanyUserOwner() instanceof User) {
80                         // Get managed instance
81                         final User managedUser = this.createManaged(basicData.getCompanyUserOwner());
82
83                         // Set it back
84                         basicData.setCompanyUserOwner(managedUser);
85                 }
86
87                 // Is a founder set?
88                 if (basicData.getCompanyFounder() instanceof Employable) {
89                         // Get managed instance
90                         final Employable managedEmployee = this.createManaged(basicData.getCompanyFounder());
91
92                         // Set it back
93                         basicData.setCompanyFounder(managedEmployee);
94                 }
95
96                 // Is a contact person set?
97                 if (basicData.getCompanyContactEmployee() instanceof Employable) {
98                         // Get managed instance
99                         final Employable managedEmployee = this.createManaged(basicData.getCompanyContactEmployee());
100
101                         // Set it back
102                         basicData.setCompanyContactEmployee(managedEmployee);
103                 }
104
105                 // Is a headquarter set?
106                 if (basicData.getCompanyHeadquarterData()instanceof Headquarter) {
107                         // Get managed instance
108                         final Headquarter managedHeadquarter = this.createManaged(basicData.getCompanyHeadquarterData());
109
110                         // Set it back
111                         basicData.setCompanyHeadquarterData(managedHeadquarter);
112                 }
113
114                 // Set created timestamps for any assigned numbers
115                 this.setAllPhoneEntriesCreated(basicData);
116
117                 // Persist it
118                 this.getEntityManager().persist(basicData);
119
120                 // Trace message
121                 this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.addBusinessBasicData: basicData.basicDataId={1} - EXIT!", this.getClass().getSimpleName(), basicData.getBasicDataId())); //NOI18N
122
123                 // Return updated instance
124                 return basicData;
125         }
126
127         /**
128          * Checks if given basic data is already added by it's company name
129          * <p>
130          * @param basicData Basic data to be checked
131          *
132          * @return Whether same company name has been used
133          */
134         private boolean isSameCompanyNameAdded (final BasicData basicData) {
135                 // Get all available entries
136                 final List<BasicData> list = this.businessDataBean.allBusinessBasicData();
137
138                 // Default is not found
139                 boolean isFound = false;
140
141                 // Then check each entry
142                 for (final BasicData entry : list) {
143                         // Is the company name matching?
144                         if (Objects.equals(entry.getCompanyName(), basicData.getCompanyName())) {
145                                 // Found match
146                                 isFound = true;
147                         }
148                 }
149
150                 // Return flag
151                 return isFound;
152         }
153
154 }