66
77import gov .anl .aps .logr .common .exceptions .CdbException ;
88import gov .anl .aps .logr .common .exceptions .InvalidObjectState ;
9+ import gov .anl .aps .logr .common .mqtt .constants .CallSource ;
10+ import gov .anl .aps .logr .common .mqtt .model .entities .LogbookSearchOptions ;
911import gov .anl .aps .logr .common .utilities .CollectionUtility ;
1012import gov .anl .aps .logr .portal .constants .EntityTypeName ;
1113import gov .anl .aps .logr .portal .constants .LogDocumentSettings ;
1618import gov .anl .aps .logr .portal .controllers .utilities .EntityInfoControllerUtility ;
1719import gov .anl .aps .logr .portal .controllers .utilities .EntityTypeControllerUtility ;
1820import gov .anl .aps .logr .portal .controllers .utilities .ItemDomainLogbookControllerUtility ;
21+ import gov .anl .aps .logr .portal .controllers .utilities .SearchControllerUtility ;
1922import gov .anl .aps .logr .portal .controllers .utilities .LogReactionControllerUtility ;
2023import gov .anl .aps .logr .portal .controllers .utilities .PropertyTypeControllerUtility ;
2124import gov .anl .aps .logr .portal .controllers .utilities .SettingTypeControllerUtility ;
5255import java .time .format .DateTimeFormatter ;
5356import java .time .temporal .ChronoUnit ;
5457import java .util .ArrayList ;
55- import java . util . Calendar ;
58+
5659import java .util .Date ;
5760import java .util .List ;
5861import java .util .Map ;
5962import java .util .Objects ;
6063import java .util .logging .Level ;
61- import java . util . regex . Pattern ;
64+
6265import javax .ejb .EJB ;
6366import javax .enterprise .context .SessionScoped ;
6467import javax .faces .component .UIComponent ;
@@ -1049,26 +1052,19 @@ public void performEntitySearch(String searchString, boolean caseInsensitive) {
10491052 SearchSettings searchSettings = searchCtrl .getSearchSettings ();
10501053 Boolean advancedSearch = searchSettings .getAdvancedSearch ();
10511054
1052- String entityTypeIdList = null ;
1053- String itemTypeIdList = null ;
1054- String userIdList = null ;
10551055 Date startModifiedTime = null ;
10561056 Date endModifiedTime = null ;
10571057 Date startCreatedTime = null ;
10581058 Date endCreatedTime = null ;
10591059
10601060 if (advancedSearch ) {
1061- entityTypeIdList = CollectionUtility .generateIdListString (searchLogbookTypeList );
1062- itemTypeIdList = CollectionUtility .generateIdListString (searchSystemList );
1063- userIdList = CollectionUtility .generateIdListString (searchUserList );
1064-
10651061 startModifiedTime = searchModifiedStartDate ;
10661062 endModifiedTime = searchModifiedEndDate ;
10671063 startCreatedTime = searchCreatedStartDate ;
10681064 endCreatedTime = searchCreatedEndDate ;
10691065
1070- endModifiedTime = adjustEndTime (endModifiedTime );
1071- endCreatedTime = adjustEndTime (endCreatedTime );
1066+ endModifiedTime = ItemDomainLogbookControllerUtility . adjustEndTimeForSearch (endModifiedTime );
1067+ endCreatedTime = ItemDomainLogbookControllerUtility . adjustEndTimeForSearch (endCreatedTime );
10721068 }
10731069
10741070 resetSearchVariables ();
@@ -1079,67 +1075,15 @@ public void performEntitySearch(String searchString, boolean caseInsensitive) {
10791075
10801076 super .performEntitySearch (searchString , searchArgs , caseInsensitive );
10811077
1082- // Search log entries.
1083- List <Object []> results = itemDomainLogbookFacade .searchEntityLogs (searchString , itemTypeIdList , entityTypeIdList , userIdList ,
1084- startModifiedTime , endModifiedTime , startCreatedTime , endCreatedTime );
1085-
1086- ItemDomainLogbookControllerUtility controllerUtility1 = getControllerUtility ();
1087- String patternString = controllerUtility1 .generatePatternString (searchString );
1088- Pattern searchPattern = controllerUtility1 .getSearchPattern (patternString , caseInsensitive );
1089-
1090- logResults = new ArrayList <>();
1091-
1092- for (Object [] result : results ) {
1093- ItemDomainLogbook logbook = (ItemDomainLogbook ) result [0 ];
1094- Log log = (Log ) result [1 ];
1095- Long logId = (Long ) result [2 ];
1096-
1097- SearchResult searchResult = new SearchResult (logbook , logbook .getId (), logbook .getName (), log );
1098- searchResult .setAdditionalAttribute ("" + logId );
1099-
1100- String text = log .getText ();
1101- String [] logLines = text .split ("\n " );
1102- String matching_lines = "" ;
1103-
1104- for (int i = 0 ; i < logLines .length ; i ++) {
1105- String lineText = logLines [i ];
1106-
1107- if (searchPattern .matcher (lineText ).find ()) {
1108- matching_lines += lineText + "\n " ;
1109- }
1110- }
1111- searchResult .addAttributeMatch ("log entry" , matching_lines );
1112-
1113- controllerUtility1 .addCommonLogEntryDocumentMatches (searchResult , searchLogbookTypeList , searchSystemList );
1114-
1115- if (searchUserList != null && !searchUserList .isEmpty ()) {
1116- for (UserInfo ui : searchUserList ) {
1117- Integer searchUserId = ui .getId ();
1078+ // Search log entries using shared utility method.
1079+ logResults = utility .searchLogEntries (searchString , caseInsensitive , searchArgs );
11181080
1119- UserInfo enteredByUser = log .getEnteredByUser ();
1120- UserInfo lastModifiedByUser = log .getLastModifiedByUser ();
1121-
1122- if (Objects .equals (enteredByUser .getId (), searchUserId )) {
1123- searchResult .addAttributeMatch ("Create User" , enteredByUser .toString ());
1124- }
1125- if (Objects .equals (lastModifiedByUser .getId (), searchUserId )) {
1126- searchResult .addAttributeMatch ("Last Modify User" , lastModifiedByUser .toString ());
1127- }
1128- }
1129- }
1130-
1131- if (startCreatedTime != null || endCreatedTime != null ) {
1132- Date enteredOnDateTime = log .getEnteredOnDateTime ();
1133- searchResult .addAttributeMatch ("Created on" , enteredOnDateTime .toString ());
1134- }
1135-
1136- if (startModifiedTime != null || endModifiedTime != null ) {
1137- Date modifiedOnDateTime = log .getLastModifiedOnDateTime ();
1138- searchResult .addAttributeMatch ("Modified on" , modifiedOnDateTime .toString ());
1139- }
1140-
1141- logResults .add (searchResult );
1142- }
1081+ // Publish MQTT search event with logbook-specific options
1082+ LogbookSearchOptions options = new LogbookSearchOptions (
1083+ searchLogbookTypeList , searchSystemList , searchUserList ,
1084+ startModifiedTime , endModifiedTime ,
1085+ startCreatedTime , endCreatedTime , caseInsensitive );
1086+ SearchControllerUtility .publishSearchMqttEvent (searchString , options , CallSource .Portal );
11431087 }
11441088
11451089 public String getSearchOpts () {
@@ -1250,20 +1194,6 @@ public void processSearchRequestParams() {
12501194 }
12511195 }
12521196
1253- private Date adjustEndTime (Date endTime ) {
1254- if (endTime != null ) {
1255- // Add offset to the end of the selected date.
1256- Calendar endDateCal = Calendar .getInstance ();
1257- endDateCal .setTime (endTime );
1258- endDateCal .set (Calendar .HOUR , 23 );
1259- endDateCal .set (Calendar .MINUTE , 59 );
1260- endDateCal .set (Calendar .SECOND , 59 );
1261- endTime = endDateCal .getTime ();
1262- }
1263-
1264- return endTime ;
1265- }
1266-
12671197 public List <SearchResult > getLogResults () {
12681198 return logResults ;
12691199 }
0 commit comments