]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/techtype/table/ValidateTechTypeTableHandler.java
Tech type table content validation
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / techtype / table / ValidateTechTypeTableHandler.java
diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/techtype/table/ValidateTechTypeTableHandler.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/techtype/table/ValidateTechTypeTableHandler.java
new file mode 100644 (file)
index 0000000..8438fd7
--- /dev/null
@@ -0,0 +1,42 @@
+package org.simantics.district.network.ui.techtype.table;
+
+import java.util.Set;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.simantics.db.Resource;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.district.network.techtype.TechTypeValidationUtils;
+import org.simantics.utils.ui.ExceptionUtils;
+
+public class ValidateTechTypeTableHandler {
+       @CanExecute
+       public boolean canExecute() {
+               return TechTypeTableView.table.getCurrentTable() != null;
+       }
+       
+       @Execute
+       public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell s) {
+               Resource table = TechTypeTableView.table.getCurrentTable();
+               if (table == null)
+                       return;
+               
+               Set<String> result;
+               try {
+                       result = TechTypeValidationUtils.validateTechTypeTable(table);
+               } catch (DatabaseException e) {
+                       ExceptionUtils.logAndShowError("Tech type table validation failed", e);
+                       return;
+               }
+               
+               TechTypeTableView.table.setValidationResult(result);
+               
+               MessageDialog.openInformation(s, "Validation result", result.isEmpty() ?
+                               "No invalid values found" : result.size() + " invalid values found");
+       }
+}