org.hsh.bfr.db/src/org/hsh/bfr/db/PlausibilityChecker.java
/*******************************************************************************
* Copyright (c) 2015 Federal Institute for Risk Assessment (BfR), Germany
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Contributors:
* Department Biological Safety - BfR
*******************************************************************************/
package org.hsh.bfr.db;
import java.sql.ResultSet;
import java.util.Calendar;
import java.util.Date;
import java.util.Vector;
import org.hsh.bfr.db.gui.dbtable.MyDBTable;
import org.hsh.bfr.db.gui.dbtable.header.GuiMessages;
/**
* @author Weiser
*
*/
public class PlausibilityChecker {
public static String getTableRepeats(MyTable myT) {
String result = null;
String[] fn = myT.getFieldNames();
String[] ft = myT.getFieldTypes();
String cols = "";
for (int i=0;i<fn.length;i++) {
if (!ft[i].startsWith("BLOB(")) {
cols += "," + DBKernel.delimitL(fn[i]);
}
}
if (cols.length() > 0) {
cols = cols.substring(1);
result = "SELECT COUNT(*)," + cols + " FROM " + DBKernel.delimitL(myT.getTablename()) + " GROUP BY " + cols + " HAVING COUNT(*) > 1";
}
return result;
}
public static String[] getValuePlausible(String tablename, String fieldname, Object newValue) {
String[] result = null;
if (tablename.equals("Literatur")) {
if (fieldname.equals("Jahr")) {
Integer jahr = 0;
try {
jahr = (Integer) newValue;
}
catch (Exception e) {}
Calendar cal = Calendar.getInstance();
cal.setTime(new Date()); //heute
int diesjahr = cal.get(Calendar.YEAR);
if (jahr < 1100 && jahr > diesjahr) {
result = new String[1];
result[0] = GuiMessages.getString("Merkwürdige Jahresangabe...");
}
}
}
return result;
}
private static String getDKSQL2(String tablename, String fieldname, String where, String idConf) {
String sql = "SELECT " + idConf +
" FROM " + DBKernel.delimitL(tablename) + " LEFT JOIN " +
DBKernel.delimitL("DoubleKennzahlen") + " ON " + DBKernel.delimitL(tablename) + "." + DBKernel.delimitL(fieldname) +
" = " + DBKernel.delimitL("DoubleKennzahlen") + "." + DBKernel.delimitL("ID") +
" WHERE (" + where + ")";
return sql;
}
private static void getDKValuePlausible(MyTable myT, Vector<String[]> result, String idConf) {
MyTable[] foreignFields = myT.getForeignFields();
if (foreignFields != null) {
for (int i=0;i<foreignFields.length;i++) {
if (foreignFields[i] != null && foreignFields[i].getTablename().equals("DoubleKennzahlen")) {
String fieldname = myT.getFieldNames()[i];
if (fieldname.equalsIgnoreCase("ph")) {
result.add(new String[] {
getDKSQL(myT.getTablename(), fieldname, -1, 15, idConf),
GuiMessages.getString("Der pH-Wert muss zwischen -1 und 15 liegen!")
});
}
else if (fieldname.equalsIgnoreCase("aw")) {
result.add(new String[] {
getDKSQL(myT.getTablename(), fieldname, 0, 1, idConf),
GuiMessages.getString("Der aw-Wert muss zwischen 0 und 1 liegen!")
});
}
else if (fieldname.equalsIgnoreCase("Temperatur")) {
result.add(new String[] {
getDKSQL(myT.getTablename(), fieldname, -273, 1000, idConf),
GuiMessages.getString("Die Temperatur muss zwischen -273 und 1000 liegen!")
});
}
result.add(new String[] {
getDKSQL2(myT.getTablename(),
fieldname,
DBKernel.delimitL("Wiederholungen") + " <= 1",
idConf),
fieldname + ": " + GuiMessages.getString("Wenn die Anzahl der Wiederholungen = 1 ist, dann sollte ein Einzelwert eingetragen werden! Anzahl Wiederholungen < 1 machen keinen Sinn!")
});
result.add(new String[] {
getDKSQL2(myT.getTablename(),
fieldname,
DBKernel.delimitL("Wiederholungen") + " IS NULL AND (" +
//DBKernel.delimitL("Wert") + " IS NOT NULL AND " + DBKernel.delimitL("Wert_typ") + " IS NOT NULL AND " + DBKernel.delimitL("Wert_typ") + " > 1 OR " + es gibt leider viele Mittelwertangaben ohne die Anzahl der Wiederholungen
//DBKernel.delimitL("Standardabweichung") + " IS NOT NULL OR " +
DBKernel.delimitL("UCL95") + " IS NOT NULL OR " + DBKernel.delimitL("LCL95") + " IS NOT NULL OR " +
DBKernel.delimitL("Verteilung") + " IS NOT NULL)",
idConf), // OR " + DBKernel.delimitL("Verteilung") + " = ''
fieldname + ": " + GuiMessages.getString("Wenn die Anzahl der Wiederholungen nicht definiert ist, dann kann MW/Median/UCL/LCL/SD/Verteilung nicht gegeben sein!")
});
result.add(new String[] {
getDKSQL2(myT.getTablename(),
fieldname,
DBKernel.delimitL("Wiederholungen") + " > 1 AND " +
DBKernel.delimitL("Wert") + " IS NOT NULL AND (" + DBKernel.delimitL("Wert_typ") + " IS NULL OR " + DBKernel.delimitL("Wert_typ") + " = 1)",
idConf),
fieldname + ": " + GuiMessages.getString("Wenn die Anzahl der Wiederholungen > 1 ist, dann kann ein Einzelwert nicht gegeben sein!")
});
/*
result.add(new String[] {
getDKSQL2(myT.getTablename(), fieldname, DBKernel.delimitL("Wert") + " IS NULL AND " +
DBKernel.delimitL("Minimum") + " IS NULL AND " +
DBKernel.delimitL("Maximum") + " IS NULL"),
(idField.equalsIgnoreCase("ID") ? "" : DBKernel.delimitL(myT.getTablename()) + ", ") +
fieldname + ": Wenigstens einer der Werte Wert, Minimum, Maximum muss angegeben sein!"
});
*/
}
}
}
}
private static String getDKSQL(String tablename, String fieldname, int min, int max, String idConf) {
String sql = "SELECT " + idConf +
" FROM " + DBKernel.delimitL(tablename) + " LEFT JOIN " +
DBKernel.delimitL("DoubleKennzahlen") + " ON " + DBKernel.delimitL(tablename) + "." + DBKernel.delimitL(fieldname) +
" = " + DBKernel.delimitL("DoubleKennzahlen") + "." + DBKernel.delimitL("ID") +
" WHERE (" + DBKernel.delimitL("Wert") + " < " + min + " OR " + DBKernel.delimitL("Wert") + " > " + max + " OR " +
DBKernel.delimitL("Standardabweichung") + " < " + min + " OR " + DBKernel.delimitL("Standardabweichung") + " > " + max + " OR " +
DBKernel.delimitL("Minimum") + " < " + min + " OR " + DBKernel.delimitL("Minimum") + " > " + max + " OR " +
DBKernel.delimitL("Maximum") + " < " + min + " OR " + DBKernel.delimitL("Maximum") + " > " + max + " OR " +
DBKernel.delimitL("LCL95") + " < " + min + " OR " + DBKernel.delimitL("LCL95") + " > " + max + " OR " +
DBKernel.delimitL("UCL95") + " < " + min + " OR " + DBKernel.delimitL("UCL95") + " > " + max + " OR " +
DBKernel.delimitL("Exponent") + " IS NOT NULL AND " + DBKernel.delimitL("Exponent") + " != 0 OR " +
DBKernel.delimitL("Standardabweichung_exp") + " IS NOT NULL AND " + DBKernel.delimitL("Standardabweichung_exp") + " != 0 OR " +
DBKernel.delimitL("Minimum_exp") + " IS NOT NULL AND " + DBKernel.delimitL("Minimum_exp") + " != 0 OR " +
DBKernel.delimitL("Maximum_exp") + " IS NOT NULL AND " + DBKernel.delimitL("Maximum_exp") + " != 0 OR " +
DBKernel.delimitL("LCL95_exp") + " IS NOT NULL AND " + DBKernel.delimitL("LCL95_exp") + " != 0 OR " +
DBKernel.delimitL("UCL95_exp") + " < " + min + " OR " + DBKernel.delimitL("UCL95_exp") + " > " + max + ")";
return sql;
}
public static Vector<String[]> getPlausibilityRow(MyDBTable table, MyTable myT, int row, String idField) {
String tablename = myT.getTablename();
Vector<String[]> result = new Vector<>();
String idConf;
if (idField.equalsIgnoreCase("ID")) {
idConf = DBKernel.delimitL(tablename) + "." + DBKernel.delimitL("ID") + " AS " + DBKernel.delimitL("ID");
}
else {
idConf = DBKernel.delimitL(tablename) + "." + DBKernel.delimitL(idField) + " AS " + DBKernel.delimitL("ID") + "," +
DBKernel.delimitL(tablename) + "." + DBKernel.delimitL("ID") + " AS " + DBKernel.delimitL("ID2");
}
getDKValuePlausible(myT, result, idConf);
if (tablename.equals("Matrices")) {
if (table == null) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Matrixname") + " IS NULL",
GuiMessages.getString("Ein Matrixname sollte angegeben werden!")
});
}
}
else if (tablename.equals("Agenzien")) {
if (table == null) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Agensname") + " IS NULL",
GuiMessages.getString("Ein Agensname sollte angegeben werden!")
});
}
}
else if (tablename.equals("Methoden")) {
if (table == null) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Name") + " IS NULL",
GuiMessages.getString("Ein Name sollte angegeben werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Referenz") + " IS NULL",
GuiMessages.getString("Eine Referenz sollte angegeben werden!")
});
}
}
else if (tablename.equals("Kontakte")) {
if (table == null) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Name") + " IS NULL",
GuiMessages.getString("Ein Name sollte angegeben werden!")
});
if (!DBKernel.isKrise) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("EMail") + " IS NULL OR " + DBKernel.delimitL("Telefon") + " IS NULL",
GuiMessages.getString("Eine E-Mail Adresse oder eine Telefonnummer sollte angegeben werden!")
});
}
}
}
else if (tablename.equals("Literatur")) {
if (table == null) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Erstautor") + " IS NULL OR " + DBKernel.delimitL("Jahr") + " IS NULL OR " + DBKernel.delimitL("Titel") + " IS NULL",
GuiMessages.getString("Erstautor, Jahr, Titel sollten angegeben werden!")
});
Calendar cal = Calendar.getInstance();
cal.setTime(new Date()); //heute
int jahr = cal.get(Calendar.YEAR);
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Jahr") + " < 1100 OR " + DBKernel.delimitL("Jahr") + " > " + jahr,
GuiMessages.getString("Merkwürdige Jahresangabe...")
});
}
}
else if (tablename.equals("Krankheitsbilder")) {
if (table == null) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) + " WHERE " + DBKernel.delimitL("Referenz") + " IS NULL",
GuiMessages.getString("Eine Referenz sollte angegeben werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) + " WHERE " + DBKernel.delimitL("Agens") + " IS NULL",
GuiMessages.getString("Ein Agens sollte angegeben werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Krankheitsverlauf") + " IS NOT NULL AND " + DBKernel.delimitL("Zielpopulation") + " IS NULL",
GuiMessages.getString("Bei Dateneingabe in \"Krankheitsverlauf\" muss Dateneingabe in \"Zielpopulation\" vorhanden sein")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Inkubationszeit") + " IS NOT NULL AND " + DBKernel.delimitL("IZ_Einheit") + " IS NULL" +
" OR " + DBKernel.delimitL("Inkubationszeit") + " IS NULL AND " + DBKernel.delimitL("IZ_Einheit") + " IS NOT NULL",
GuiMessages.getString("Bei Dateneingabe in \"Inkubationszeit\" muss Dateneingabe in \"IZ_Einheit\" erfolgen; " +
"falls in \"Inkubationszeit\" keine Eingabe vorhanden ist, darf auch in \"IZ_Einheit\" kein Eintrag vorhanden sein")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Symptomdauer") + " IS NOT NULL AND " + DBKernel.delimitL("SD_Einheit") + " IS NULL" +
" OR " + DBKernel.delimitL("Symptomdauer") + " IS NULL AND " + DBKernel.delimitL("SD_Einheit") + " IS NOT NULL",
GuiMessages.getString("Bei Dateneingabe in \"Symptomdauer\" muss Dateneingabe in \"SD_Einheit\" erfolgen; " +
"falls in \"Symptomdauer\" keine Eingabe vorhanden ist, darf auch in \"SD_Einheit\" kein Eintrag vorhanden sein")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Infektionsdosis") + " IS NOT NULL AND " + DBKernel.delimitL("ID_Einheit") + " IS NULL" +
" OR " + DBKernel.delimitL("Infektionsdosis") + " IS NULL AND " + DBKernel.delimitL("ID_Einheit") + " IS NOT NULL",
GuiMessages.getString("Bei Dateneingabe in \"Infektionsdosis\" muss Dateneingabe in \"ID_Einheit\" erfolgen; " +
"falls in \"Infektionsdosis\" keine Eingabe vorhanden ist, darf auch in \"ID_Einheit\" kein Eintrag vorhanden sein")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Letalitaetsdosis50") + " IS NOT NULL AND (" +
DBKernel.delimitL("LD50_Einheit") + " IS NULL OR " + DBKernel.delimitL("LD50_Organismus") + " IS NULL OR " +
DBKernel.delimitL("LD50_Aufnahmeroute") + " IS NULL)" +
" OR " + DBKernel.delimitL("Letalitaetsdosis50") + " IS NULL AND (" +
DBKernel.delimitL("LD50_Einheit") + " IS NOT NULL OR " + DBKernel.delimitL("LD50_Organismus") + " IS NOT NULL OR " +
DBKernel.delimitL("LD50_Aufnahmeroute") + " IS NOT NULL)",
GuiMessages.getString("Bei Dateneingabe in \"Letalitaetsdosis50\" muss Dateneingabe in \"LD50_Einheit\",\"LD50_Organismus\" und \"LD50_Aufnahmeroute\" erfolgen; " +
"falls in \"Letalitaetsdosis50\" keine Eingabe vorhanden ist, darf auch in \"LD50_Einheit\",\"LD50_Organismus\" und \"LD50_Aufnahmeroute\" kein Eintrag vorhanden sein")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Letalitaetsdosis100") + " IS NOT NULL AND (" +
DBKernel.delimitL("LD100_Einheit") + " IS NULL OR " + DBKernel.delimitL("LD100_Organismus") + " IS NULL OR " +
DBKernel.delimitL("LD100_Aufnahmeroute") + " IS NULL)" +
" OR " + DBKernel.delimitL("Letalitaetsdosis100") + " IS NULL AND (" +
DBKernel.delimitL("LD100_Einheit") + " IS NOT NULL OR " + DBKernel.delimitL("LD100_Organismus") + " IS NOT NULL OR " +
DBKernel.delimitL("LD100_Aufnahmeroute") + " IS NOT NULL)",
GuiMessages.getString("Bei Dateneingabe in \"Letalitaetsdosis100\" muss Dateneingabe in \"LD100_Einheit\",\"LD100_Organismus\" und \"LD100_Aufnahmeroute\" erfolgen; " +
"falls in \"Letalitaetsdosis100\" keine Eingabe vorhanden ist, darf auch in \"LD100_Einheit\",\"LD100_Organismus\" und \"LD100_Aufnahmeroute\" kein Eintrag vorhanden sein")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Letalitaet") + " IS NOT NULL AND " + DBKernel.delimitL("Therapie_Letal") + " IS NULL" +
" OR " + DBKernel.delimitL("Letalitaet") + " IS NULL AND " + DBKernel.delimitL("Therapie_Letal") + " IS NOT NULL",
GuiMessages.getString("Falls Angabe in \"Letalitaet\" muss Dateneingabe in \"Therapie_Letal\" getroffen werden; falls in \"Letalitaet\" keine Eingabe vorhanden ist, darf auch in \"Therapie_Letal\" kein Eintrag vorhanden sein")
});
}
}
else if (tablename.equals("Zertifizierungssysteme")) {
if (table == null) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Anbieter") + " IS NULL",
GuiMessages.getString("Ein Anbieter sollte angegeben werden!")
});
}
}
else if (tablename.equals("Labore")) {
if (table == null) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Kontakt") + " IS NULL",
GuiMessages.getString("Ein Kontakt sollte angegeben werden!")
});
}
}
/*
else if (tablename.equals("DoubleKennzahlen")) {
if (table == null) {
}
else if (row < 0) {
String ergebnis = null;
MyTable theT = table.getActualTable();
for (int k=0;k<table.getColumnCount();k++) {
if (DBKernel.isNewDBL(theT, k)) {
String sName = table.getColumn(k).getColumnName();
for (int i=0;i<table.getRowCount();i++) {
Object id = table.getValueAt(i, k);
ergebnis = checkPlausibleDBL(id, theT.getTablename(), sName, (Integer) table.getValueAt(i, 0));
}
}
}
//System.out.println("ergebnis: " + ergebnis);
if (ergebnis != null && ergebnis.trim().length() > 0) {
result = new Vector<String[]>();
result.add(new String[]{ergebnis});
}
}
else {
result = null;
}
}
*/
else if (tablename.equals("Messwerte")) {
/* eigentlich schon, aber erstmal zu viele Fehler...
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Versuchsbedingungen") + " IS NULL",
"Jeder Messwert muss zu einer Versuchsbedingung gehören!"
});
*/
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Delta") + " AND " + DBKernel.delimitL("Zeit") + " = 0",
GuiMessages.getString("Für den Zeitpunkt 0 kann das Delta Feld nicht angehakt sein!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Zeit") + " IS NULL",
GuiMessages.getString("Zeit muss angegeben werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("ZeitEinheit") + " IS NULL",
GuiMessages.getString("Zeiteinheit muss angegeben werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Konzentration") + " IS NULL",
GuiMessages.getString("Konzentration muss angegeben werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Konz_Einheit") + " IS NULL",
GuiMessages.getString("Die Einheit für die Konzentration sollte eingetragen werden!")
});
if (table == null) {
}
else if (row < 0) {
String ergebnis = "";
for (int i=0;i<table.getRowCount();i++) {
int id = (Integer) table.getValueAt(i, 0);
for (int j=0;j<result.size();j++) {
String[] res = result.get(j);
String sql = res[0] + " AND " + DBKernel.delimitL(tablename) + "." + DBKernel.delimitL("ID") + "=" + id;
ResultSet rs = DBKernel.getResultSet(sql, false);
try {
if (rs != null && rs.first()) {
ergebnis += tablename + " (ID=" + id + "): " + res[1] + "\n";
}
}
catch (Exception e) {MyLogger.handleException(e);}
}
}
//System.out.println("ergebnis: " + ergebnis);
if (ergebnis.trim().length() > 0) {
result = new Vector<>();
result.add(new String[]{ergebnis});
}
}
else {
result = null;
}
}
else if (tablename.equals("Versuchsbedingungen")) {
if (table == null) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Referenz") + " IS NULL",
GuiMessages.getString("Eine Referenz in den Versuchsbedingungen sollte angegeben werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Agens") + " IS NULL",
GuiMessages.getString("Ein Agens in den Versuchsbedingungen sollte angegeben werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Matrix") + " IS NULL",
GuiMessages.getString("Eine Matrix in den Versuchsbedingungen sollte angegeben werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Temperatur") + " IS NULL",
GuiMessages.getString("Temperatur muss angegeben werden!")
});
}
}
else if (tablename.equals("Kits")) {
if (table == null) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Kosten") + " IS NOT NULL AND " + DBKernel.delimitL("KostenEinheit") + " IS NULL",
GuiMessages.getString("Die Einheit für die Kosten sollte eingetragen werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("ZertifikatNr") + " IS NOT NULL AND (" + DBKernel.delimitL("Gueltigkeit") + " IS NULL OR " + DBKernel.delimitL("Zertifizierungssystem") + " IS NULL)",
GuiMessages.getString("Wenn die ZertifikatNummer angegeben ist, dann sollte auch deren Gültigkeit und das Zertifizierungssystem angegeben sein!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Testanbieter") + " IS NULL OR " + DBKernel.delimitL("AnbieterAngebot") + " IS NULL",
GuiMessages.getString("Einen Testanbieter und ein AnbieterAngebot sollte es immer geben! Wenn es ein InHouse Kit ist, dann sollte als Kontakt die eigene Adresse angegeben werden und als Angebot interne Informationen")
});
}
}
else if (tablename.equals("Aufbereitungsverfahren")) {
if (table == null) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Dauer") + " IS NULL OR " + DBKernel.delimitL("DauerEinheit") + " IS NULL",
GuiMessages.getString("Die Dauer und deren Einheit sollte eingetragen werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Personalressourcen") + " IS NOT NULL AND " + DBKernel.delimitL("ZeitEinheit") + " IS NULL",
GuiMessages.getString("Die Zeiteinheit für die Personalressourcen sollte eingetragen werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Kosten") + " IS NULL OR " + DBKernel.delimitL("KostenEinheit") + " IS NULL",
GuiMessages.getString("Die Kosten und deren Einheit sollte eingetragen werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Matrix") + " IS NULL",
GuiMessages.getString("Eine Matrix sollte angegeben werden!")
});
}
}
else if (tablename.equals("Nachweisverfahren")) {
if (table == null) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Kosten") + " IS NULL OR " + DBKernel.delimitL("KostenEinheit") + " IS NULL",
GuiMessages.getString("Die Kosten und deren Einheit sollte eingetragen werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Agens") + " IS NULL",
GuiMessages.getString("Ein Agens sollte angegeben werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Dauer") + " IS NULL OR " + DBKernel.delimitL("DauerEinheit") + " IS NULL",
GuiMessages.getString("Die Dauer und deren Einheit sollte eingetragen werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Personalressourcen") + " IS NOT NULL AND " + DBKernel.delimitL("ZeitEinheit") + " IS NULL",
GuiMessages.getString("Die Zeiteinheit für die Personalressourcen sollte eingetragen werden!")
});
}
}
else if (tablename.equals("Aufbereitungs_Nachweisverfahren")) {
if (table == null) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Nachweisgrenze") + " IS NOT NULL AND " + DBKernel.delimitL("NG_Einheit") + " IS NULL",
GuiMessages.getString("Die Einheit für die Nachweisgrenze sollte eingetragen werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Referenz") + " IS NULL",
GuiMessages.getString("Eine Referenz sollte angegeben werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Nachweisverfahren") + " IS NULL",
GuiMessages.getString("Ein Nachweisverfahren sollte angegeben werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Aufbereitungsverfahren") + " IS NULL",
GuiMessages.getString("Ein Aufbereitungsverfahren sollte angegeben werden!")
});
}
}
else if (tablename.equals("Labor_Aufbereitungs_Nachweisverfahren")) {
if (table == null) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Durchsatz") + " IS NOT NULL AND " + DBKernel.delimitL("DurchsatzEinheit") + " IS NULL",
GuiMessages.getString("Die Einheit für den Durchsatz sollte eingetragen werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Kosten") + " IS NULL OR " + DBKernel.delimitL("KostenEinheit") + " IS NULL",
GuiMessages.getString("Die Kosten und deren Einheit sollte eingetragen werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("ZertifikatNr") + " IS NOT NULL AND (" + DBKernel.delimitL("Gueltigkeit") + " IS NULL OR " + DBKernel.delimitL("Zertifizierungssystem") + " IS NULL)",
GuiMessages.getString("Wenn die ZertifikatNummer angegeben ist, dann sollte auch deren Gültigkeit und das Zertifizierungssystem angegeben sein!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Labor") + " IS NULL",
GuiMessages.getString("Ein Labor sollte angegeben werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Aufbereitungs_Nachweisverfahren") + " IS NULL",
GuiMessages.getString("Ein Aufbereitungs_Nachweisverfahren sollte angegeben werden!")
});
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("LaborAngebot") + " IS NULL",
GuiMessages.getString("Ein LaborAngebot sollte angegeben werden!")
});
}
}
if (table == null) {
if (!myT.getHideScore()) {
result.add(new String[]{
"SELECT " + idConf + " FROM " + DBKernel.delimitL(tablename) +
" WHERE " + DBKernel.delimitL("Guetescore") + " IS NOT NULL AND (" + DBKernel.delimitL("Kommentar") + " IS NULL OR LENGTH(LTRIM(" + DBKernel.delimitL("Kommentar") + "))=0)",
GuiMessages.getString("Wenn die Ampel geschaltet ist, MUSS ein Kommentar dazu abgegeben werden!")
});
}
}
return result;
}
@SuppressWarnings("unused")
private static Double getDouble(String strVal) {
Double val = null;
try {
val = Double.valueOf(strVal);
}
catch (Exception e) {}
return val;
}
@SuppressWarnings("unused")
private static String checkPlausibleDBL(Object kzID, String tname, String spaltenname, Integer tableID) {
String ergebnis = null;
if (kzID != null) {
String msg = GuiMessages.getString("Wenn die Anzahl der Wiederholungen = 1 ist, dann sollte ein Einzelwert eingetragen werden! Anzahl Wiederholungen < 1 machen keinen Sinn!");
String sql = "SELECT " + DBKernel.delimitL("ID") + " FROM " + DBKernel.delimitL("DoubleKennzahlen") +
" WHERE " + DBKernel.delimitL("Wiederholungen") + " <= 1 AND " + DBKernel.delimitL("ID") + "=" + kzID;
ResultSet rs = DBKernel.getResultSet(sql, false);
try {
if (rs != null && rs.first()) {
ergebnis += tname + " (ID=" + tableID + ", " + spaltenname + "): " + msg + "\n";
}
}
catch (Exception e) {MyLogger.handleException(e);}
msg = GuiMessages.getString("Wenn die Anzahl der Wiederholungen nicht definiert ist, dann kann MW/Median/UCL/LCL/SD/Verteilung nicht gegeben sein!");
sql = "SELECT " + DBKernel.delimitL("ID") + " FROM " + DBKernel.delimitL("DoubleKennzahlen") +
" WHERE " + DBKernel.delimitL("ID") + "=" + kzID + " AND " +
DBKernel.delimitL("Wiederholungen") + " IS NULL AND (" +
DBKernel.delimitL("Wert") + " IS NOT NULL AND " + DBKernel.delimitL("Wert_typ") + " IS NOT NULL AND " + DBKernel.delimitL("Wert_typ") + " > 1 OR " +
DBKernel.delimitL("UCL95") + " IS NOT NULL OR " + DBKernel.delimitL("LCL95") + " IS NOT NULL OR " +
DBKernel.delimitL("Standardabweichung") + " IS NOT NULL OR " + DBKernel.delimitL("Verteilung") + " IS NOT NULL)";
rs = DBKernel.getResultSet(sql, false);
try {
if (rs != null && rs.first()) {
ergebnis += tname + " (ID=" + tableID + ", " + spaltenname + "): " + msg + "\n";
}
}
catch (Exception e) {MyLogger.handleException(e);}
msg = GuiMessages.getString("Wenn die Anzahl der Wiederholungen > 1 ist, dann kann ein Einzelwert nicht gegeben sein!");
sql = "SELECT " + DBKernel.delimitL("ID") + " FROM " + DBKernel.delimitL("DoubleKennzahlen") +
" WHERE " + DBKernel.delimitL("ID") + "=" + kzID + " AND " +
DBKernel.delimitL("Wiederholungen") + " > 1 AND " +
DBKernel.delimitL("Wert") + " IS NOT NULL AND (" + DBKernel.delimitL("Wert_typ") + " IS NULL OR " + DBKernel.delimitL("Wert_typ") + " = 1)";
rs = DBKernel.getResultSet(sql, false);
try {
if (rs != null && rs.first()) {
ergebnis += tname + " (ID=" + tableID + ", " + spaltenname + "): " + msg + "\n";
}
}
catch (Exception e) {MyLogger.handleException(e);}
msg = GuiMessages.getString("Wenigstens einer der Werte Wert, Minimum, Maximum muss angegeben sein!");
sql = "SELECT " + DBKernel.delimitL("ID") + " FROM " + DBKernel.delimitL("DoubleKennzahlen") +
" WHERE " + DBKernel.delimitL("ID") + "=" + kzID + " AND " +
DBKernel.delimitL("Wert") + " IS NULL AND " +
DBKernel.delimitL("Minimum") + " IS NULL AND " +
DBKernel.delimitL("Maximum") + " IS NULL";
rs = DBKernel.getResultSet(sql, false);
try {
if (rs != null && rs.first()) {
ergebnis += tname + " (ID=" + tableID + ", " + spaltenname + "): " + msg + "\n";
}
}
catch (Exception e) {MyLogger.handleException(e);}
}
return ergebnis;
}
}