import java.util.zip.ZipOutputStream;
import org.apache.commons.lang3.StringUtils;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.operations.AbstractOperation;
import org.eclipse.core.commands.operations.IOperationHistory;
import eu.etaxonomy.cdm.api.application.CdmApplicationState;
import eu.etaxonomy.cdm.api.service.IProgressMonitorService;
import eu.etaxonomy.cdm.api.service.UpdateResult;
+import eu.etaxonomy.cdm.api.service.dto.CdmEntityIdentifier;
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.common.SetMap;
import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.io.common.ExportDataWrapper;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
import eu.etaxonomy.taxeditor.ui.dialog.ReportTextDialog;
-import eu.etaxonomy.taxeditor.view.e4.AbstractCdmDataViewerE4;
+import eu.etaxonomy.taxeditor.view.e4.AbstractCdmDataViewer;
import eu.etaxonomy.taxeditor.view.e4.details.DetailsPartE4;
import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
*/
public abstract class AbstractUtility {
- protected static final Logger logger = Logger.getLogger(AbstractUtility.class);
+ protected static final Logger logger = LogManager.getLogger(AbstractUtility.class);
/** Constant <code>statusLineManager</code> */
protected static IStatusLineManager statusLineManager;
"There is no operation history for this context");
}
- final IAdaptable uiInfoAdapter = WorkspaceUndoUtil
- .getUIInfoAdapter(getShell());
+ final IAdaptable uiInfoAdapter = WorkspaceUndoUtil.getUIInfoAdapter(getShell());
Job job = Job.create(operation.getLabel(), (ICoreRunnable) monitor -> {
sync.syncExec(() -> {
public static void refreshDetailsViewer(EPartService partService) {
if (getDetailsView(partService) != null) {
- ((AbstractCdmDataViewerE4) getDetailsView(partService).getViewer()).refresh();
+ ((AbstractCdmDataViewer) getDetailsView(partService).getViewer()).refresh();
}
}
public static void reflowDetailsViewer(EPartService partService) {
if (getDetailsView(partService) != null) {
- ((AbstractCdmDataViewerE4) getDetailsView(partService).getViewer()).reflow();
+ ((AbstractCdmDataViewer) getDetailsView(partService).getViewer()).reflow();
}
}
if (!taxaToUpdate.isEmpty() && updateNavigator){
refreshNavigator();
}
+ subMonitor.subTask("");
return Status.OK_STATUS;
}
private static Set<Taxon> getTaxaToUpdate(IRemotingProgressMonitor remotingMonitor) {
Set<Taxon> taxaToUpdate = new HashSet<>();
- if (remotingMonitor.getResult() instanceof UpdateResult){
+ if (remotingMonitor != null && remotingMonitor.getResult() instanceof UpdateResult){
for (CdmBase object: ((UpdateResult)remotingMonitor.getResult()).getUpdatedObjects()){
Taxon taxon = null;
public static void createResult(String label, boolean showResult,
IRemotingProgressMonitor remotingMonitor) {
final StringBuilder reportSb = new StringBuilder();
- if (remotingMonitor.getResult() instanceof ExportResult) {
+ if (remotingMonitor == null){
+ reportSb.append("Something went wrong. No result returned from server.");
+ }else if (remotingMonitor.getResult() instanceof ExportResult) {
reportSb.append(((ExportResult)remotingMonitor.getResult()).createReport());
}else if (remotingMonitor.getResult() instanceof UpdateResult){
- if (((UpdateResult)remotingMonitor.getResult()).isOk()){
- int count = ((UpdateResult)remotingMonitor.getResult()).getUpdatedObjects().size();
- if (count == 0){
- count = ((UpdateResult)remotingMonitor.getResult()).getUpdatedCdmIds().size();
- }
-
- reportSb.append("Update successful. \n"+"Updated Objects: " +count);
- }
- if (!((UpdateResult)remotingMonitor.getResult()).getExceptions().isEmpty()){
- reportSb.append(((UpdateResult)remotingMonitor.getResult()).getExceptions().toString());
- }
+ UpdateResult result = (UpdateResult)remotingMonitor.getResult();
+ createUpdateResultReport(reportSb, result);
}else if (remotingMonitor.getReports()!= null){
for (String o:remotingMonitor.getReports()){
reportSb.append(o);
}
}
- if(showResult && !StringUtils.isBlank(reportSb.toString()) && reportSb.length() != 0) {
+ String report = reportSb.toString();
+ if(showResult && !StringUtils.isBlank(report)) {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
// display reports with possibility to save
ReportTextDialog dialog = new ReportTextDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
dialog.setTitle(label + " Report");
- dialog.setReportText(reportSb.toString());
+ dialog.setReportText(report);
dialog.open();
}
});
}
}
+ public static void createUpdateResultReport(final StringBuilder reportSb, UpdateResult result) {
+ if (result.isOk() || result.isAbort()){
+ SetMap<Class<? extends CdmBase>, Integer> map = getUpdateResultStatistics(result);
+ reportSb.append("Update successful. \n"
+ + "Updated Objects: " + map.sizeAll() + "\n================\n");
+ for (Class<? extends CdmBase> clazz : map.keySet()){
+ reportSb.append( CdmUtils.userFriendlyClassName(clazz)+": " + map.get(clazz).size() + "\n");
+ }
+ }
+ if (!result.getExceptions().isEmpty()){
+ reportSb.append(result.getExceptions().toString());
+ }
+ }
+
+ //TODO move to cdmlib
+ public static SetMap<Class<? extends CdmBase>, Integer> getUpdateResultStatistics(UpdateResult result) {
+ SetMap<Class<? extends CdmBase>, Integer> map = new SetMap<>();
+ for (CdmBase cdmBase : result.getUpdatedObjects()){
+ map.putItem(cdmBase.getClass(), cdmBase.getId());
+ }
+ for (CdmEntityIdentifier entity : result.getUpdatedCdmIds()){
+ map.putItem(entity.getCdmClass(), entity.getId());
+ }
+
+ return map;
+ }
+
private static void createExportResult(final String label, String urlString, boolean createZip,
IRemotingProgressMonitor remotingMonitor) {
}
} catch(Exception e){
logger.error(e.getStackTrace());
+ e.printStackTrace();
}
}
}