parent
e6e6919b92
commit
ba1cd8c49c
|
|
@ -34,7 +34,7 @@ public class ExportTaskStatus implements Comparable<ExportTaskStatus> {
|
||||||
|
|
||||||
private LocalDateTime started;
|
private LocalDateTime started;
|
||||||
|
|
||||||
private ImExportTaskStatusEnum status;
|
private ImExportTaskStatus status;
|
||||||
|
|
||||||
private Throwable exception;
|
private Throwable exception;
|
||||||
|
|
||||||
|
|
@ -54,11 +54,11 @@ public class ExportTaskStatus implements Comparable<ExportTaskStatus> {
|
||||||
this.started = started;
|
this.started = started;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ImExportTaskStatusEnum getStatus() {
|
public ImExportTaskStatus getStatus() {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setStatus(final ImExportTaskStatusEnum status) {
|
protected void setStatus(final ImExportTaskStatus status) {
|
||||||
this.status = status;
|
this.status = status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -104,7 +104,7 @@ public class ExportTaskStatus implements Comparable<ExportTaskStatus> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canEqual(final Object obj) {
|
public boolean canEqual(final Object obj) {
|
||||||
return obj instanceof ImExportTaskStatus;
|
return obj instanceof ExportTaskStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -18,121 +18,14 @@
|
||||||
*/
|
*/
|
||||||
package org.libreccm.ui.admin.imexport;
|
package org.libreccm.ui.admin.imexport;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.ZoneId;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.concurrent.Future;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
*/
|
*/
|
||||||
public class ImExportTaskStatus implements Comparable<ImExportTaskStatus> {
|
public enum ImExportTaskStatus {
|
||||||
|
|
||||||
private String name;
|
ERROR,
|
||||||
|
FINISHED,
|
||||||
private LocalDateTime started;
|
RUNNING,
|
||||||
|
|
||||||
private Future<?> status;
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void setName(final String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalDateTime getStarted() {
|
|
||||||
return started;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getStartedAsIso() {
|
|
||||||
return DateTimeFormatter.ISO_DATE_TIME.withZone(
|
|
||||||
ZoneId.systemDefault()).format(started
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void setStarted(final LocalDateTime started) {
|
|
||||||
this.started = started;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Future<?> getStatus() {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void setStatus(final Future<?> status) {
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isDone() {
|
|
||||||
return status.isDone();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void cancel() {
|
|
||||||
status.cancel(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
int hash = 7;
|
|
||||||
hash = 23 * hash + Objects.hashCode(this.name);
|
|
||||||
hash = 23 * hash + Objects.hashCode(this.started);
|
|
||||||
return hash;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(final Object obj) {
|
|
||||||
if (this == obj) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (obj == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!(obj instanceof ImExportTaskStatus)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
final ImExportTaskStatus other = (ImExportTaskStatus) obj;
|
|
||||||
if (!other.canEqual(this)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!Objects.equals(this.name, other.getName())) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return Objects.equals(this.started, other.getStarted());
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canEqual(final Object obj) {
|
|
||||||
return obj instanceof ImExportTaskStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int compareTo(final ImExportTaskStatus other) {
|
|
||||||
return Comparator
|
|
||||||
.nullsFirst(Comparator
|
|
||||||
.comparing(ImExportTaskStatus::getName)
|
|
||||||
.thenComparing(ImExportTaskStatus::getStarted)
|
|
||||||
)
|
|
||||||
.compare(this, other);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return String.format(
|
|
||||||
"%s{ "
|
|
||||||
+ "name = %s, "
|
|
||||||
+ "started = %s, "
|
|
||||||
+ "status = %s"
|
|
||||||
+ " }",
|
|
||||||
super.toString(),
|
|
||||||
name,
|
|
||||||
DateTimeFormatter.ISO_DATE_TIME.withZone(
|
|
||||||
ZoneId.systemDefault()
|
|
||||||
).format(started),
|
|
||||||
Objects.toString(status)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2020 LibreCCM Foundation.
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
|
||||||
* MA 02110-1301 USA
|
|
||||||
*/
|
|
||||||
package org.libreccm.ui.admin.imexport;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
|
||||||
*/
|
|
||||||
public enum ImExportTaskStatusEnum {
|
|
||||||
|
|
||||||
ERROR,
|
|
||||||
FINISHED,
|
|
||||||
RUNNING,
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -45,7 +45,7 @@ public class ImExportTasks {
|
||||||
final String exportName = task.getName();
|
final String exportName = task.getName();
|
||||||
|
|
||||||
importExport.exportEntities(entities, exportName);
|
importExport.exportEntities(entities, exportName);
|
||||||
task.getStatus().setStatus(ImExportTaskStatusEnum.FINISHED);
|
task.getStatus().setStatus(ImExportTaskStatus.FINISHED);
|
||||||
return task;
|
return task;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,7 @@ public class ImportExportTaskManager {
|
||||||
new ExportTask(exportName, LocalDate.now(), entities, taskStatus)
|
new ExportTask(exportName, LocalDate.now(), entities, taskStatus)
|
||||||
).handle((task , ex) -> handleExportTaskResult(task, ex, taskStatus));
|
).handle((task , ex) -> handleExportTaskResult(task, ex, taskStatus));
|
||||||
|
|
||||||
taskStatus.setStatus(ImExportTaskStatusEnum.RUNNING);
|
taskStatus.setStatus(ImExportTaskStatus.RUNNING);
|
||||||
exportTasks.add(taskStatus);
|
exportTasks.add(taskStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -120,19 +120,16 @@ public class ImportExportTaskManager {
|
||||||
new ImportTask(importName, LocalDate.now(), taskStatus)
|
new ImportTask(importName, LocalDate.now(), taskStatus)
|
||||||
).handle((task, ex) -> handleImportTaskResult(task, ex, taskStatus));
|
).handle((task, ex) -> handleImportTaskResult(task, ex, taskStatus));
|
||||||
|
|
||||||
taskStatus.setStatus(ImExportTaskStatusEnum.RUNNING);
|
taskStatus.setStatus(ImExportTaskStatus.RUNNING);
|
||||||
importTasks.add(taskStatus);
|
importTasks.add(taskStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Schedule(hour = "*", minute = "*/5", persistent = false)
|
@Schedule(hour = "*", minute = "*/5", persistent = false)
|
||||||
protected void removeFinishedTasks() {
|
protected void removeFinishedTasks() {
|
||||||
exportTasks.removeIf(taskStatus -> taskStatus.getStatus() == ImExportTaskStatusEnum.FINISHED);
|
exportTasks.removeIf(taskStatus -> taskStatus.getStatus() == ImExportTaskStatus.FINISHED);
|
||||||
// importTasks.removeIf(taskStatus -> taskStatus.getStatus() == ImExportTaskStatusEnum.FINISHED);
|
// importTasks.removeIf(taskStatus -> taskStatus.getStatus() == ImExportTaskStatus.FINISHED);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cancelTask(final ImExportTaskStatus task) {
|
|
||||||
task.cancel();
|
|
||||||
}
|
|
||||||
|
|
||||||
private Set<? extends Exportable> collectEntities(
|
private Set<? extends Exportable> collectEntities(
|
||||||
final Class<Exportable> ofType
|
final Class<Exportable> ofType
|
||||||
|
|
@ -152,9 +149,9 @@ public class ImportExportTaskManager {
|
||||||
final ExportTask task, final Throwable ex, final ExportTaskStatus status
|
final ExportTask task, final Throwable ex, final ExportTaskStatus status
|
||||||
) {
|
) {
|
||||||
if (ex == null) {
|
if (ex == null) {
|
||||||
status.setStatus(ImExportTaskStatusEnum.FINISHED);
|
status.setStatus(ImExportTaskStatus.FINISHED);
|
||||||
} else {
|
} else {
|
||||||
status.setStatus(ImExportTaskStatusEnum.ERROR);
|
status.setStatus(ImExportTaskStatus.ERROR);
|
||||||
status.setException(ex);
|
status.setException(ex);
|
||||||
LOGGER.error("Export Task {} failed ", task);
|
LOGGER.error("Export Task {} failed ", task);
|
||||||
LOGGER.error("with exception:", ex);
|
LOGGER.error("with exception:", ex);
|
||||||
|
|
@ -166,9 +163,9 @@ public class ImportExportTaskManager {
|
||||||
final ImportTask task, final Throwable ex, final ImportTaskStatus status
|
final ImportTask task, final Throwable ex, final ImportTaskStatus status
|
||||||
) {
|
) {
|
||||||
if (ex == null) {
|
if (ex == null) {
|
||||||
status.setStatus(ImExportTaskStatusEnum.FINISHED);
|
status.setStatus(ImExportTaskStatus.FINISHED);
|
||||||
} else {
|
} else {
|
||||||
status.setStatus(ImExportTaskStatusEnum.ERROR);
|
status.setStatus(ImExportTaskStatus.ERROR);
|
||||||
status.setException(ex);
|
status.setException(ex);
|
||||||
LOGGER.error("Import Task {} failed", task);
|
LOGGER.error("Import Task {} failed", task);
|
||||||
LOGGER.error("with exception: ", ex);
|
LOGGER.error("with exception: ", ex);
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ public class ImportTaskStatus implements Comparable<ImportTaskStatus> {
|
||||||
|
|
||||||
private LocalDateTime started;
|
private LocalDateTime started;
|
||||||
|
|
||||||
private ImExportTaskStatusEnum status;
|
private ImExportTaskStatus status;
|
||||||
|
|
||||||
private Throwable exception;
|
private Throwable exception;
|
||||||
|
|
||||||
|
|
@ -55,11 +55,11 @@ public class ImportTaskStatus implements Comparable<ImportTaskStatus> {
|
||||||
this.started = started;
|
this.started = started;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ImExportTaskStatusEnum getStatus() {
|
public ImExportTaskStatus getStatus() {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setStatus(final ImExportTaskStatusEnum status) {
|
protected void setStatus(final ImExportTaskStatus status) {
|
||||||
this.status = status;
|
this.status = status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -88,7 +88,7 @@ public class ImportTaskStatus implements Comparable<ImportTaskStatus> {
|
||||||
if (obj == null) {
|
if (obj == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!(obj instanceof ImExportTaskStatus)) {
|
if (!(obj instanceof ExportTaskStatus)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
final ImportTaskStatus other = (ImportTaskStatus) obj;
|
final ImportTaskStatus other = (ImportTaskStatus) obj;
|
||||||
|
|
@ -106,7 +106,7 @@ public class ImportTaskStatus implements Comparable<ImportTaskStatus> {
|
||||||
|
|
||||||
|
|
||||||
public boolean canEqual(final Object obj) {
|
public boolean canEqual(final Object obj) {
|
||||||
return obj instanceof ImExportTaskStatus;
|
return obj instanceof ImportTaskStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue