Skip to content

Commit 4031bd2

Browse files
committed
Improvements for Java21
1 parent 7293f98 commit 4031bd2

File tree

19 files changed

+244
-174
lines changed

19 files changed

+244
-174
lines changed

logicaldoc-core/src/main/java/com/logicaldoc/core/dashlet/DashletContent.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -320,16 +320,13 @@ private void printExtendedAttributes(DateFormat df, PrintWriter writer, Document
320320
Object val = extValues.get(key);
321321
if (val != null) {
322322
writer.print("<ext_" + name + ">");
323-
if (val instanceof Date date)
324-
writer.print(df.format(date));
325-
else if (val instanceof Integer integer)
326-
writer.print(Integer.toString(integer));
327-
else if (val instanceof Long longVal)
328-
writer.print(Long.toString(longVal));
329-
else if (val instanceof Double doubleVal)
330-
writer.print(Double.toString(doubleVal));
331-
else
332-
writer.print("<![CDATA[" + val + "]]>");
323+
switch (val) {
324+
case Date date -> writer.print(df.format(date));
325+
case Integer integer -> writer.print(Integer.toString(integer));
326+
case Long longVal -> writer.print(Long.toString(longVal));
327+
case Double doubleVal -> writer.print(Double.toString(doubleVal));
328+
default -> throw new IllegalArgumentException("Unexpected value: " + val);
329+
}
333330
writer.print("</ext_" + name + ">");
334331
}
335332
}

logicaldoc-core/src/main/java/com/logicaldoc/core/document/DigestProcessor.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,6 @@ public DigestProcessor() {
3535
super(NAME);
3636
log = LoggerFactory.getLogger(DigestProcessor.class);
3737
}
38-
39-
public DigestProcessor(String name, DocumentDAO documentDao) {
40-
this();
41-
this.documentDao = documentDao;
42-
}
4338

4439
@Override
4540
public boolean isIndeterminate() {

logicaldoc-core/src/main/java/com/logicaldoc/core/document/TagsProcessor.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package com.logicaldoc.core.document;
22

3-
import javax.annotation.Resource;
4-
53
import org.slf4j.LoggerFactory;
4+
import org.springframework.beans.factory.annotation.Autowired;
65
import org.springframework.stereotype.Component;
76

87
import com.logicaldoc.core.PersistenceException;
@@ -21,16 +20,12 @@ public class TagsProcessor extends Task {
2120

2221
public static final String NAME = "TagsProcessor";
2322

24-
@Resource(name = "DocumentDAO")
25-
private DocumentDAO documentDao;
23+
private final DocumentDAO documentDao;
2624

27-
public TagsProcessor() {
25+
@Autowired
26+
public TagsProcessor(DocumentDAO documentDao) {
2827
super(NAME);
2928
log = LoggerFactory.getLogger(TagsProcessor.class);
30-
}
31-
32-
public TagsProcessor(String name, DocumentDAO documentDao) {
33-
this();
3429
this.documentDao = documentDao;
3530
}
3631

logicaldoc-core/src/main/java/com/logicaldoc/core/folder/PathCalculator.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
import java.util.List;
44

5-
import javax.annotation.Resource;
6-
75
import org.slf4j.LoggerFactory;
6+
import org.springframework.beans.factory.annotation.Autowired;
87
import org.springframework.stereotype.Component;
98

109
import com.logicaldoc.core.PersistenceException;
@@ -23,21 +22,17 @@ public class PathCalculator extends Task {
2322

2423
public static final String NAME = "PathCalculator";
2524

26-
@Resource(name = "FolderDAO")
2725
private FolderDAO folderDao;
2826

29-
public PathCalculator(String name, FolderDAO folderDao) {
30-
this();
31-
this.folderDao = folderDao;
32-
}
33-
3427
private long processed = 0;
3528

3629
private long errors = 0;
3730

38-
public PathCalculator() {
31+
@Autowired
32+
public PathCalculator(FolderDAO folderDao) {
3933
super(NAME);
4034
log = LoggerFactory.getLogger(PathCalculator.class);
35+
this.folderDao = folderDao;
4136
}
4237

4338
@Override

logicaldoc-core/src/main/java/com/logicaldoc/core/job/JobManager.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,11 @@ public void schedule(AbstractJob job, Map<String, Object> dictionary, Map<Object
117117
}
118118

119119
private Trigger prepareTrigger(AbstractJob job, Object triggerSpec, Map<Object, Map<String, Object>> triggersMap) {
120-
Trigger trig = null;
121-
122120
if (!triggersMap.get(triggerSpec).containsKey(TENANT_ID))
123121
triggersMap.get(triggerSpec).put(TENANT_ID, job.getTenantId());
124122

125-
if (triggerSpec instanceof Date dateSpec) {
123+
return switch (triggerSpec) {
124+
case Date dateSpec -> {
126125
// The job must be fired on a specific data
127126
SimpleScheduleBuilder schedule = SimpleScheduleBuilder.simpleSchedule();
128127
if (MISSFIRE_RUNNOW.equals(getMissfireInstruction(job.getGroup())))
@@ -131,25 +130,26 @@ private Trigger prepareTrigger(AbstractJob job, Object triggerSpec, Map<Object,
131130
schedule = schedule.withMisfireHandlingInstructionIgnoreMisfires();
132131

133132
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd_HHmmss");
134-
trig = TriggerBuilder.newTrigger()
135-
.withIdentity(job.getName() + "-" + df.format(triggerSpec), job.getGroup())
133+
yield TriggerBuilder.newTrigger().withIdentity(job.getName() + "-" + df.format(triggerSpec), job.getGroup())
136134
.usingJobData(new JobDataMap(triggersMap.get(triggerSpec))).startAt(dateSpec).withSchedule(schedule)
137135
.build();
138-
} else if (triggerSpec instanceof String cronSpec) {
136+
}
137+
case String cronSpec -> {
139138
// The job must be fired on a specific data
140139
CronScheduleBuilder schedule = CronScheduleBuilder.cronSchedule(cronSpec);
141140
if (MISSFIRE_RUNNOW.equals(getMissfireInstruction(job.getGroup())))
142141
schedule = schedule.withMisfireHandlingInstructionFireAndProceed();
143142
else
144143
schedule = schedule.withMisfireHandlingInstructionDoNothing();
145144

146-
trig = TriggerBuilder.newTrigger().withIdentity(job.getName() + "-" + triggerSpec, job.getGroup())
145+
yield TriggerBuilder.newTrigger().withIdentity(job.getName() + "-" + triggerSpec, job.getGroup())
147146
.usingJobData(new JobDataMap(triggersMap.get(triggerSpec))).withSchedule(schedule).build();
148-
} else {
147+
}
148+
default -> {
149149
log.warn("Skipping trigger {} because not a string nor a date", triggerSpec);
150+
yield null;
150151
}
151-
152-
return trig;
152+
};
153153
}
154154

155155
/**

logicaldoc-core/src/main/java/com/logicaldoc/core/metadata/Attribute.java

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -235,38 +235,56 @@ public void setValue(Object value) {
235235
return;
236236
}
237237

238-
if (value instanceof String string) {
238+
switch (value) {
239+
case String string -> {
239240
this.type = TYPE_STRING;
240241
setStringValue(string);
241-
} else if (value instanceof Integer integer) {
242+
}
243+
244+
case Integer integer -> {
242245
this.type = TYPE_INT;
243246
setIntValue(Long.valueOf(integer));
244-
} else if (value instanceof Long longVal) {
247+
}
248+
249+
case Long longVal -> {
245250
this.type = TYPE_INT;
246251
setIntValue(longVal);
247-
} else if (value instanceof Double doubleVal) {
252+
}
253+
254+
case Double doubleVal -> {
248255
this.type = TYPE_DOUBLE;
249256
setDoubleValue(doubleVal);
250-
} else if (value instanceof Date date) {
257+
}
258+
259+
case Date date -> {
251260
this.type = TYPE_DATE;
252261
setDateValue(date);
253-
} else if (value instanceof User user) {
262+
}
263+
264+
case User user -> {
254265
this.type = TYPE_USER;
255266
this.intValue = user.getId();
256267
this.stringValue = user.getUsername();
257-
} else if (value instanceof Folder folder) {
268+
}
269+
270+
case Folder folder -> {
258271
this.type = TYPE_FOLDER;
259272
this.intValue = folder.getId();
260273
this.stringValue = folder.getName();
261-
} else if (value instanceof Document document) {
274+
}
275+
276+
case Document document -> {
262277
this.type = TYPE_DOCUMENT;
263278
this.intValue = document.getId();
264279
this.stringValue = document.getFileName();
265-
} else if (value instanceof Boolean bool) {
280+
}
281+
282+
case Boolean bool -> {
266283
this.type = TYPE_BOOLEAN;
267284
this.intValue = bool.booleanValue() ? 1L : 0L;
268-
} else {
269-
throw new IllegalArgumentException("Not a String, Long, Double, Date, Boolean, User, Folder value");
285+
}
286+
287+
default -> throw new IllegalArgumentException("Not a String, Long, Double, Date, Boolean, User, Folder value");
270288
}
271289
}
272290

logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/IndexOptimizer.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
import java.util.List;
44

5-
import javax.annotation.Resource;
6-
75
import org.slf4j.LoggerFactory;
6+
import org.springframework.beans.factory.annotation.Autowired;
87
import org.springframework.stereotype.Component;
98

109
import com.logicaldoc.core.PersistenceException;
@@ -22,19 +21,14 @@
2221
public class IndexOptimizer extends Task {
2322
public static final String NAME = "IndexOptimizer";
2423

25-
@Resource(name = "SearchEngine")
2624
private SearchEngine indexer;
2725

28-
@Resource(name = "DocumentDAO")
2926
private DocumentDAO documentDao;
3027

31-
public IndexOptimizer() {
28+
@Autowired
29+
public IndexOptimizer(SearchEngine indexer, DocumentDAO documentDao) {
3230
super(NAME);
3331
log = LoggerFactory.getLogger(IndexOptimizer.class);
34-
}
35-
36-
public IndexOptimizer(String name, SearchEngine indexer, DocumentDAO documentDao) {
37-
this();
3832
this.indexer = indexer;
3933
this.documentDao = documentDao;
4034
}

logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/IndexerTask.java

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,10 @@
1313
import java.util.concurrent.ScheduledExecutorService;
1414
import java.util.concurrent.TimeUnit;
1515

16-
import javax.annotation.Resource;
17-
1816
import org.apache.commons.lang.StringUtils;
1917
import org.slf4j.Logger;
2018
import org.slf4j.LoggerFactory;
19+
import org.springframework.beans.factory.annotation.Autowired;
2120
import org.springframework.stereotype.Component;
2221

2322
import com.logicaldoc.core.PersistenceException;
@@ -58,16 +57,12 @@ public class IndexerTask extends Task {
5857

5958
public static final String NAME = "IndexerTask";
6059

61-
@Resource(name = "documentManager")
6260
private DocumentManager documentManager;
6361

64-
@Resource(name = "DocumentDAO")
6562
private DocumentDAO documentDao;
6663

67-
@Resource(name = "TenantDAO")
6864
private TenantDAO tenantDao;
6965

70-
@Resource(name = "SearchEngine")
7166
private SearchEngine indexer;
7267

7368
private long indexed = 0;
@@ -78,14 +73,11 @@ public class IndexerTask extends Task {
7873

7974
private long parsingTime = 0;
8075

81-
public IndexerTask() {
76+
@Autowired
77+
public IndexerTask(DocumentManager documentManager, DocumentDAO documentDao, TenantDAO tenantDao,
78+
SearchEngine indexer) {
8279
super(NAME);
8380
log = LoggerFactory.getLogger(IndexerTask.class);
84-
}
85-
86-
public IndexerTask(String name, DocumentManager documentManager, DocumentDAO documentDao, TenantDAO tenantDao,
87-
SearchEngine indexer) {
88-
this();
8981
this.documentManager = documentManager;
9082
this.documentDao = documentDao;
9183
this.tenantDao = tenantDao;
@@ -209,7 +201,9 @@ protected void runTask() throws TaskException {
209201
Map<String, Object> params = new HashMap<>();
210202
params.put("transactionId", transactionId);
211203

212-
documentDao.jdbcUpdate("update ld_document set ld_transactionid = null where ld_transactionId = :transactionId", params);
204+
documentDao.jdbcUpdate(
205+
"update ld_document set ld_transactionid = null where ld_transactionId = :transactionId",
206+
params);
213207
} catch (PersistenceException e) {
214208
log.error(e.getMessage(), e);
215209
}
@@ -256,7 +250,8 @@ private void assignTransition(List<Long> docIds) throws PersistenceException {
256250
params.put("transactionId", transactionId);
257251

258252
documentDao.jdbcUpdate(
259-
" update ld_document set ld_transactionid = :transactionId where ld_transactionid is null and ld_id in " + idsStr,
253+
" update ld_document set ld_transactionid = :transactionId where ld_transactionid is null and ld_id in "
254+
+ idsStr,
260255
params);
261256
}
262257
log.info("Documents marked for indexing in transaction {}", transactionId);

logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/folder/FolderCriterion.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -184,12 +184,12 @@ public void setValue(Serializable value) {
184184
setLongValue((Long) value);
185185
break;
186186
case Attribute.TYPE_DOUBLE:
187-
if (value instanceof Double doubleVal)
188-
setDoubleValue(doubleVal);
189-
else if (value instanceof Long longVal)
190-
setDoubleValue(longVal.doubleValue());
191-
else
192-
setDoubleValue(((Float) value).doubleValue());
187+
switch (value) {
188+
case Double doubleVal -> setDoubleValue(doubleVal);
189+
case Long longVal -> setDoubleValue(longVal.doubleValue());
190+
case Float floatVal -> setDoubleValue(floatVal.doubleValue());
191+
default -> setDoubleValue(null);
192+
}
193193
break;
194194
case Attribute.TYPE_DATE:
195195
setDateValue((Date) value);

logicaldoc-core/src/main/java/com/logicaldoc/core/stats/StatsCollector.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -816,14 +816,12 @@ protected void saveStatistic(String parameter, Object val, long tenantId) throws
816816
} else
817817
genericDAO.initialize(gen);
818818

819-
if (val instanceof Date date)
820-
gen.setDate1(date);
821-
else if (val instanceof String string)
822-
gen.setString1(string);
823-
else if (val instanceof Long longVal)
824-
gen.setInteger1(longVal);
825-
else
826-
gen.setInteger1(((Integer) val).longValue());
819+
switch (val) {
820+
case Date dateVal -> gen.setDate1(dateVal);
821+
case String stringVal -> gen.setString1(stringVal);
822+
case Integer intVal -> gen.setInteger1(intVal.longValue());
823+
default -> gen.setInteger1(null);
824+
}
827825

828826
try {
829827
genericDAO.store(gen);

0 commit comments

Comments
 (0)