--- /dev/null
+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");
+ }
+}