Daniel Quathamer
1 year ago
64 changed files with 64856 additions and 56216 deletions
@ -0,0 +1,343 @@
@@ -0,0 +1,343 @@
|
||||
/* |
||||
* de.superx.etl - a package for controlling ETL routines |
||||
* Copyright (C) 2021 Daniel Quathamer <danielq@memtext.de> |
||||
* |
||||
* This package is licensed under the CampusSource License; |
||||
* http://www.campussource.de/org/license/
|
||||
*/ |
||||
package de.superx.etl; |
||||
|
||||
import java.io.BufferedReader; |
||||
import java.io.BufferedWriter; |
||||
import java.io.File; |
||||
import java.io.FileInputStream; |
||||
import java.io.FileNotFoundException; |
||||
import java.io.FileOutputStream; |
||||
import java.io.IOException; |
||||
import java.io.InputStreamReader; |
||||
import java.io.OutputStreamWriter; |
||||
import java.io.StringReader; |
||||
import java.io.StringWriter; |
||||
import java.io.UnsupportedEncodingException; |
||||
import java.net.URISyntaxException; |
||||
import java.util.Enumeration; |
||||
import java.util.Properties; |
||||
|
||||
import javax.xml.parsers.DocumentBuilder; |
||||
import javax.xml.parsers.DocumentBuilderFactory; |
||||
import javax.xml.parsers.ParserConfigurationException; |
||||
import javax.xml.xpath.XPath; |
||||
import javax.xml.xpath.XPathConstants; |
||||
import javax.xml.xpath.XPathExpressionException; |
||||
import javax.xml.xpath.XPathFactory; |
||||
|
||||
import org.w3c.dom.Document; |
||||
import org.w3c.dom.Node; |
||||
import org.xml.sax.InputSource; |
||||
import org.xml.sax.SAXException; |
||||
|
||||
import de.superx.servlet.SuperXManager; |
||||
|
||||
/** |
||||
|
||||
*/ |
||||
public class EtlUtils { |
||||
public static final String NEWLINE=System.getProperty("line.separator"); |
||||
public static final String PATHSEP=File.separator; |
||||
public static String WEBINFDIR=SuperXManager.getWEB_INFPfad(); |
||||
public static String SUPERX_DIR=(System.getProperties().containsKey("SUPERX_DIR")? System.getProperty("SUPERX_DIR"):""); |
||||
public static String MODUL_ROOT_PFAD=(System.getProperties().containsKey("MODULE_PFAD")? System.getProperty("MODULE_PFAD"):SUPERX_DIR+PATHSEP+"db"+PATHSEP+"module"); |
||||
public static String MODUL_ROHDATEN_SUBPFAD=PATHSEP+"rohdaten"+PATHSEP; |
||||
|
||||
|
||||
public static void main(String args[]) { |
||||
|
||||
try { |
||||
String webinfdir=getWebinfDirectory();; |
||||
System.out.println(webinfdir); |
||||
|
||||
} catch (URISyntaxException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} catch (Exception e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
|
||||
public static Properties convertStringToProperty(String inp) throws IOException |
||||
{ |
||||
Properties myProps = new Properties(); |
||||
myProps.load(new StringReader(inp)); |
||||
return myProps; |
||||
} |
||||
/* Ein EtlJob hat vordefininierte Parameter, die zur Laufzeit durch die runTimeParams ersetzt werden. |
||||
* Der merge findet hier statt: |
||||
*/ |
||||
public static Properties mergeParamProperties(Properties params, Properties runTimeParams) |
||||
|
||||
{ |
||||
if(params==null) { |
||||
//Job ist noch unbekannt, oder hat keine vordef. Parameter
|
||||
//in diesem Falle werden die Standardparameter übergeben (Modulpfade, SUPERX_DIR)
|
||||
params=runTimeParams; |
||||
} |
||||
else |
||||
{ |
||||
String parsedParam; |
||||
Enumeration runTimeParamNames = runTimeParams.propertyNames(); |
||||
while (runTimeParamNames.hasMoreElements()) { |
||||
String runTimeParamName = (String)runTimeParamNames.nextElement(); |
||||
String runTimeParamValue = runTimeParams.getProperty(runTimeParamName); |
||||
Enumeration paramNames = params.propertyNames(); |
||||
while (paramNames.hasMoreElements()) { |
||||
String paramName=(String)paramNames.nextElement(); |
||||
String paramValue=params.getProperty(paramName); |
||||
if(paramName.equals(runTimeParamName) ) { |
||||
paramValue=runTimeParamValue; |
||||
params.setProperty(paramName, paramValue); |
||||
} |
||||
if(paramValue.indexOf("$"+runTimeParamName)>-1) { |
||||
paramValue=de.memtext.util.StringUtils.replace(paramValue,"$"+runTimeParamName, runTimeParamValue); |
||||
params.setProperty(paramName, paramValue); |
||||
} |
||||
|
||||
} |
||||
} |
||||
} |
||||
return params; |
||||
|
||||
} |
||||
public static String parseStringAgainstParams(String targetString, Properties params) |
||||
|
||||
{ |
||||
String parsedParam; |
||||
Enumeration paramNames = params.propertyNames(); |
||||
while (paramNames.hasMoreElements()) { |
||||
String paramName = (String)paramNames.nextElement(); |
||||
String paramValue = params.getProperty(paramName); |
||||
if(targetString.indexOf("$"+paramName)>-1) { |
||||
targetString=de.memtext.util.StringUtils.replace(targetString,"$"+paramName, paramValue); |
||||
} |
||||
|
||||
} |
||||
return targetString; |
||||
} |
||||
public static void initJobEnvironment() |
||||
{ |
||||
String initVar=""; |
||||
if(System.getProperty("WEBINFDIR") ==null) |
||||
{ |
||||
|
||||
try { |
||||
initVar=de.superx.servlet.SuperXManager.getWEB_INFPfad(); |
||||
if(initVar==null || initVar.equals(".")) |
||||
{ |
||||
//ermittle webinfdir
|
||||
initVar=getWebinfDirectory(); |
||||
|
||||
} |
||||
} catch (Exception e) { |
||||
// do nothing, try another
|
||||
} |
||||
|
||||
WEBINFDIR=initVar; |
||||
|
||||
} |
||||
|
||||
if(System.getProperty("SUPERX_DIR") ==null) |
||||
{ |
||||
SUPERX_DIR=WEBINFDIR+PATHSEP+"conf"+PATHSEP+"edustore"; |
||||
|
||||
} |
||||
|
||||
} |
||||
private static String getJarName() |
||||
{ |
||||
return new File(EtlUtils.class.getProtectionDomain() |
||||
.getCodeSource() |
||||
.getLocation() |
||||
.getPath()) |
||||
.getName(); |
||||
} |
||||
|
||||
private static boolean runningFromJar() |
||||
{ |
||||
String jarName = getJarName(); |
||||
return jarName.contains(".jar"); |
||||
} |
||||
|
||||
public static String getWebinfDirectory() throws URISyntaxException |
||||
{ |
||||
if (runningFromJar()) |
||||
{ |
||||
return getWebinfDirectoryFromJar(); |
||||
} else |
||||
{ |
||||
return getWebinfDirectoryFromClass(); |
||||
} |
||||
} |
||||
|
||||
private static String getWebinfDirectoryFromClass() |
||||
{ |
||||
File f= new File(EtlUtils.class.getProtectionDomain() |
||||
.getCodeSource() |
||||
.getLocation() |
||||
.getPath()+PATHSEP+".."); |
||||
String class_path=f.getAbsolutePath(); |
||||
return class_path; |
||||
|
||||
} |
||||
|
||||
private static String getWebinfDirectoryFromJar() throws URISyntaxException |
||||
{ |
||||
File f1=new File(EtlUtils.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()); |
||||
//now we're got superx.jar, go up one level
|
||||
File f2=new File(f1.getParent()); |
||||
//now we've got WEB-INF/lib, return WEB-INF:
|
||||
|
||||
return f2.getParent(); |
||||
|
||||
} |
||||
/* die folgenden 2 Methoden |
||||
* getFileContentsWithEncoding |
||||
* saveFileContentsWithEncoding |
||||
* sind in kern5.0 in de.superx.util.FileUtils |
||||
* wg. abwärtskompatiblität hierhin kopiert, sollten langfristig wieder weg |
||||
*/ |
||||
public static String getFileContentsWithEncoding(String filePath, String encoding) { |
||||
File f = new File(filePath); |
||||
if (!f.exists()) { |
||||
System.out.println("Fehler: Datei " + filePath + " existiert nicht."); |
||||
return null; |
||||
} |
||||
String fileContents = ""; |
||||
if (encoding == null || encoding.trim().equals("")) { |
||||
encoding = System.getProperty("file.encoding"); |
||||
} |
||||
try { |
||||
// --- IputStream und OutputStream generieren ---//
|
||||
FileInputStream fis = new FileInputStream(f); |
||||
// Wenn Quelldatei Unicode, dann speziellen Reader nutzen
|
||||
BufferedReader in; |
||||
//BufferedReader ist schneller bei großen Dateien
|
||||
in = new BufferedReader(new InputStreamReader(fis, encoding)); |
||||
// --- Output-Stream der temporären Datei erzeugen ---//
|
||||
StringWriter out = new StringWriter(); |
||||
// --- Verarbeiten der Datei ---//
|
||||
String text; |
||||
text = in.readLine(); |
||||
while (text != null) { // Datei nicht leer
|
||||
out.write(text); |
||||
out.write(System.getProperty("line.separator")); |
||||
text = in.readLine(); |
||||
} |
||||
if (!(out == null)) { |
||||
fileContents = out.toString(); |
||||
} |
||||
} catch (FileNotFoundException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} catch (UnsupportedEncodingException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} catch (IOException e) { |
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace(); |
||||
} |
||||
return fileContents; |
||||
} |
||||
|
||||
public static void saveFileContentsWithEncoding(String filename, String contents, String encoding) throws |
||||
|
||||
FileNotFoundException, |
||||
IOException |
||||
{ |
||||
|
||||
|
||||
File f = new File(filename); |
||||
BufferedReader in; |
||||
BufferedWriter out; |
||||
|
||||
//Default encoding ist utf-8
|
||||
if (encoding == null) encoding = System.getProperty("file.encoding"); |
||||
// --- Output-Stream der temporären Datei erzeugen ---//
|
||||
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), encoding)); |
||||
|
||||
out.write(contents); |
||||
|
||||
out.close(); |
||||
|
||||
|
||||
}//Ende der Methode
|
||||
|
||||
|
||||
/*SAX Document aus XML-Datei erzeugen */ |
||||
public static Document buildDocumentFromXmlFile(String srcFile) |
||||
throws ParserConfigurationException, FileNotFoundException, SAXException, IOException { |
||||
Document mydomres; |
||||
org.xml.sax.InputSource is; |
||||
DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance(); |
||||
DocumentBuilder builder = dfactory.newDocumentBuilder(); |
||||
FileInputStream in = new FileInputStream(srcFile); |
||||
|
||||
is=new org.xml.sax.InputSource(in); |
||||
mydomres = builder.newDocument(); |
||||
mydomres = builder.parse(is); |
||||
return mydomres; |
||||
} |
||||
/*** |
||||
* TODO: nach merge in master diese Methode löschen, und auf de.memtext.util.XMLUtils.parseXml(String) verweisen |
||||
* @author Witt This function parses XML-containing string into documents while |
||||
* preserving the namespaces and is primarily meant to be used withing |
||||
* (jUnit) test cases |
||||
* @param xmlString |
||||
* @return |
||||
* @throws ParserConfigurationException |
||||
* @throws SAXException |
||||
* @throws IOException |
||||
*/ |
||||
public static Document parseXml(String xmlString) throws ParserConfigurationException, SAXException, IOException { |
||||
DocumentBuilderFactory myFactory = DocumentBuilderFactory.newInstance(); |
||||
myFactory.setNamespaceAware(true); |
||||
DocumentBuilder myBuilder; |
||||
myBuilder = myFactory.newDocumentBuilder(); |
||||
Document myDocument = myBuilder.parse(new InputSource(new StringReader(xmlString))); |
||||
return myDocument; |
||||
} |
||||
/** |
||||
* @param src |
||||
* @param tidInXmlFile |
||||
* @return |
||||
* @throws ParserConfigurationException |
||||
* @throws SAXException |
||||
* @throws IOException |
||||
* @throws XPathExpressionException |
||||
*/ |
||||
public static boolean isNodeValueInXml(String src, String searchPath, String expectedValue) |
||||
throws ParserConfigurationException, SAXException, IOException, XPathExpressionException { |
||||
boolean b=false; |
||||
Document mydomres =de.superx.etl.EtlUtils.parseXml(src); |
||||
XPathFactory factory = new net.sf.saxon.xpath.XPathFactoryImpl(); |
||||
|
||||
XPath xPath = factory.newXPath(); |
||||
|
||||
Node myNode=(Node) xPath.compile(searchPath).evaluate( |
||||
mydomres, XPathConstants.NODE); |
||||
if(myNode!=null) |
||||
{ |
||||
String foundValue=de.memtext.util.XMLUtils.getTheValue(myNode); |
||||
if(!(foundValue==null) && foundValue.trim().equals(expectedValue)) |
||||
b=true; |
||||
} |
||||
return b; |
||||
|
||||
} |
||||
public static String translateReturnCode(int returnCode) |
||||
{ |
||||
String returnString="Fehlerhaft"; |
||||
if(returnCode==0) |
||||
returnString="Erfolg"; |
||||
return returnString; |
||||
} |
||||
} |
@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
|
||||
package de.superx.sec; |
||||
|
||||
import java.util.regex.Matcher; |
||||
import java.util.regex.Pattern; |
||||
/* |
||||
* Check for letters, numbers and characters that don't cause problems in SQL when enclosed in '' |
||||
*/ |
||||
public class StringCheck implements InputCheck { |
||||
public static String STRING_CHECK = "string"; |
||||
private static String LETTER = "\\p{gc=L}"; // Unicode General Category "Letter"
|
||||
private static String DECIMAL = "\\p{gc=Nd}"; // Unicode General Category "Decimal Number"
|
||||
private static String SEPARATOR = "\\p{gc=Z}"; // Unicode General Category "Separator,space"
|
||||
private static String CURRENCY = "\\p{gc=Sc}"; // Unicode General Category "Currency"
|
||||
private static String ALLOWED_CHARS="()\\[\\]&/$§=\\,!#*~"; //Characters that don't cause problems in SQL when enclosed in ''
|
||||
private static Pattern STRING = Pattern.compile("\\A[" + LETTER + DECIMAL + SEPARATOR + CURRENCY + ALLOWED_CHARS+"\\.:\\-\\_/\\n\\r@\\^]*\\z"); |
||||
|
||||
@Override |
||||
public boolean check(String input) { |
||||
if (input.equals("--leer--")) { |
||||
return true; |
||||
} |
||||
Matcher matcher = STRING.matcher(input); |
||||
return matcher.find(); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,113 @@
@@ -0,0 +1,113 @@
|
||||
package de.superx.sxrest; |
||||
import javax.ws.rs.GET; |
||||
import javax.ws.rs.Path; |
||||
import javax.ws.rs.PathParam; |
||||
import javax.ws.rs.Produces; |
||||
import javax.ws.rs.QueryParam; |
||||
import javax.ws.rs.core.Context; |
||||
import javax.ws.rs.core.MediaType; |
||||
import javax.ws.rs.core.Request; |
||||
|
||||
import java.io.File; |
||||
|
||||
import javax.servlet.http.HttpServletRequest; |
||||
import de.memtext.util.DateUtils; |
||||
import de.memtext.util.FileUtils; |
||||
import de.superx.common.SxUser; |
||||
import de.superx.servlet.SuperXManager; |
||||
|
||||
@Path("/logs") |
||||
|
||||
public class LogsProvider { |
||||
@Context |
||||
Request request; |
||||
|
||||
@GET |
||||
@Path("/{logtype}") |
||||
@Produces(MediaType.TEXT_PLAIN) |
||||
public String printLogs(@PathParam("logtype") String logtype, |
||||
@QueryParam("loglines") Integer loglines, |
||||
@Context HttpServletRequest request) { |
||||
String returntext=""; |
||||
SxUser user = (SxUser) request.getSession().getAttribute("user"); |
||||
String mandantenid= (String) request.getSession().getAttribute("MandantenID"); |
||||
if(mandantenid==null || mandantenid.equals("")) |
||||
mandantenid="default"; |
||||
|
||||
if (user == null || !user.isAdmin()) { |
||||
returntext="Fehlende Rechte"; |
||||
} |
||||
else |
||||
{ |
||||
if(logtype.equals("activity")|| logtype.equals("fmsql")|| logtype.equals("sql") || logtype.equals("xml")) |
||||
{ |
||||
returntext = getMaskLogs(mandantenid,logtype); |
||||
} |
||||
else |
||||
returntext=getTomcatLogs(mandantenid,logtype,loglines); |
||||
} |
||||
|
||||
return returntext; |
||||
} |
||||
private String getMaskLogs(String mandantenid,String logtype) |
||||
{ |
||||
String logString; |
||||
if(mandantenid.equalsIgnoreCase(SuperXManager.getLastMaskenSqlMandantid())) |
||||
{ |
||||
switch (logtype) { |
||||
case "activity" : |
||||
logString=SuperXManager.activityLog.toString().replace("<br>", "\n"); |
||||
break; |
||||
case "fmsql" : |
||||
logString=SuperXManager.getLastFMMaskenSql(); |
||||
break; |
||||
case "sql" : |
||||
logString=SuperXManager.getLastMaskenSql(); |
||||
break; |
||||
case "xml" : |
||||
logString=SuperXManager.getLastXml(); |
||||
break; |
||||
default : |
||||
logString="Protokoll "+logtype+ " kann nicht gelesen werden"; |
||||
} |
||||
} |
||||
else |
||||
logString="Bitte wiederholen Sie den Aufruf mit dem jew. Mandant"; |
||||
return logString; |
||||
} |
||||
private String getTomcatLogs(String mandantenid,String logtype, Integer loglines) |
||||
{ |
||||
String logFilePath=""; |
||||
if(loglines==null ) |
||||
loglines=100; |
||||
switch (logtype) { |
||||
case "serverlog" : |
||||
logFilePath=System.getProperty("catalina.base")+File.separator+ "logs"+File.separator+"catalina.out"; |
||||
break; |
||||
case "serverlogsql" : |
||||
logFilePath=System.getProperty("catalina.base")+File.separator+ "logs"+File.separator+"superx_"+mandantenid+".log"; |
||||
break; |
||||
case "serverlogxml" : |
||||
logFilePath=System.getProperty("catalina.base")+File.separator+ "logs"+File.separator+"superx_"+mandantenid+"_xml.log"; |
||||
break; |
||||
default: |
||||
throw new RuntimeException("Logtype " + logtype + " not supported!"); |
||||
} |
||||
String logString="Protokoll "+logFilePath+ " kann nicht gelesen werden"; |
||||
|
||||
File logfile = new File(logFilePath); |
||||
if(logfile.exists()) |
||||
{ |
||||
try { |
||||
logString=FileUtils.tail(logfile,Integer.valueOf(loglines)); |
||||
} |
||||
catch (Exception e) |
||||
{ |
||||
logString+=": "+ e.toString(); |
||||
} |
||||
} |
||||
return logString; |
||||
|
||||
} |
||||
|
||||
} |
@ -1,63 +0,0 @@
@@ -1,63 +0,0 @@
|
||||
package de.superx.sxrest; |
||||
import javax.ws.rs.GET; |
||||
import javax.ws.rs.Path; |
||||
import javax.ws.rs.PathParam; |
||||
import javax.ws.rs.Produces; |
||||
import javax.ws.rs.core.Context; |
||||
import javax.ws.rs.core.MediaType; |
||||
import javax.ws.rs.core.Request; |
||||
|
||||
|
||||
import javax.servlet.http.HttpServletRequest; |
||||
import de.memtext.util.DateUtils; |
||||
import de.superx.common.SxUser; |
||||
import de.superx.servlet.SuperXManager; |
||||
|
||||
@Path("/masklogs") |
||||
|
||||
public class MaskLogs { |
||||
@Context |
||||
Request request; |
||||
|
||||
@GET |
||||
@Path("/{param}") |
||||
@Produces(MediaType.TEXT_PLAIN) |
||||
public String printLogs(@PathParam("param") String logtype,@Context HttpServletRequest request) { |
||||
String returntext=""; |
||||
SxUser user = (SxUser) request.getSession().getAttribute("user"); |
||||
String mandantenid= (String) request.getSession().getAttribute("MandantenID"); |
||||
if(mandantenid==null || mandantenid.equals("")) |
||||
mandantenid="default"; |
||||
|
||||
if (user == null || !user.isAdmin()) { |
||||
returntext="Fehlende Rechte"; |
||||
} |
||||
else |
||||
{ |
||||
if(mandantenid.equalsIgnoreCase(SuperXManager.getLastMaskenSqlMandantid())) |
||||
{ |
||||
if(logtype.equals("activity")) |
||||
{ |
||||
returntext += SuperXManager.activityLog.toString().replace("<br>", "\n"); |
||||
} |
||||
if(logtype.equals("fmsql")) |
||||
{ |
||||
returntext += SuperXManager.getLastFMMaskenSql(); |
||||
} |
||||
if(logtype.equals("sql")) |
||||
{ |
||||
returntext += SuperXManager.getLastMaskenSql(); |
||||
} |
||||
if(logtype.equals("xml")) |
||||
{ |
||||
returntext = SuperXManager.getLastXml(); |
||||
} |
||||
} |
||||
else |
||||
returntext="Bitte wiederholen Sie den Aufruf mit dem jew. Mandant"; |
||||
} |
||||
|
||||
return returntext; |
||||
} |
||||
|
||||
} |
@ -1 +1 @@
@@ -1 +1 @@
|
||||
21.02.2022 |
||||
16.08.2023 |
||||
|
@ -1,135 +0,0 @@
@@ -1,135 +0,0 @@
|
||||
=Schnittstellen kern= |
||||
{| class="prettytable" border="1" |
||||
|- |
||||
|SuperX-Version |
||||
|2 |
||||
|
||||
|- |
||||
|Modulversion |
||||
|4.9 |
||||
|
||||
|- |
||||
|Sachgebiet |
||||
|Administration id 0 |
||||
|
||||
|- |
||||
|Systeminfo |
||||
|Administration id 9 |
||||
|
||||
|- |
||||
|Thema |
||||
|Administration |
||||
|
||||
|- |
||||
|Themenbaum-Ast |
||||
|Abfragen |
||||
|
||||
|} |
||||
==Ladeschritt 1: tmp_hochschulinfo== |
||||
Die Tabelle tmp_hochschulinfo wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 2: tmp_userinfo== |
||||
Die Tabelle tmp_userinfo wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 3: tmp_user_group_bez== |
||||
Die Tabelle tmp_user_group_bez wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 4: tmp_user_institution== |
||||
Die Tabelle tmp_user_institution wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 5: tmp_user_masken_bez== |
||||
Die Tabelle tmp_user_masken_bez wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 6: tmp_user_pw== |
||||
Die Tabelle tmp_user_pw wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 7: tmp_user_sachgeb_bez== |
||||
Die Tabelle tmp_user_sachgeb_bez wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 8: tmp_user_sichtarten== |
||||
Die Tabelle tmp_user_sichtarten wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 9: tmp_user_sichten== |
||||
Die Tabelle tmp_user_sichten wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 10: tmp_group_field_pref== |
||||
Die Tabelle tmp_group_field_pref wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 11: tmp_group_masken_bez== |
||||
Die Tabelle tmp_group_masken_bez wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 12: tmp_group_sachgeb_bez== |
||||
Die Tabelle tmp_group_sachgeb_bez wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 13: tmp_group_sichtarten== |
||||
Die Tabelle tmp_group_sichtarten wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 14: tmp_group_sichten== |
||||
Die Tabelle tmp_group_sichten wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 15: tmp_groupinfo== |
||||
Die Tabelle tmp_groupinfo wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 16: tmp_fin_user_kam== |
||||
Die Tabelle tmp_fin_user_kam wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 17: tmp_konstanten== |
||||
Die Tabelle tmp_konstanten wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 18: tmp_unload_params== |
||||
Die Tabelle tmp_unload_params wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 19: tmp_sx_repository== |
||||
Die Tabelle tmp_sx_repository wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 20: tmp_themenbaum== |
||||
Die Tabelle tmp_themenbaum wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 21: tmp_maskeninfo== |
||||
Die Tabelle tmp_maskeninfo wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 22: tmp_felderinfo== |
||||
Die Tabelle tmp_felderinfo wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 23: tmp_masken_felder_bez== |
||||
Die Tabelle tmp_masken_felder_bez wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 24: tmp_maske_system_bez== |
||||
Die Tabelle tmp_maske_system_bez wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 25: tmp_sachgeb_maske_bez== |
||||
Die Tabelle tmp_sachgeb_maske_bez wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 26: tmp_sx_stylesheets== |
||||
Die Tabelle tmp_sx_stylesheets wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 27: tmp_sx_mask_style== |
||||
Die Tabelle tmp_sx_mask_style wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 28: tmp_stylesheet_field== |
||||
Die Tabelle tmp_stylesheet_field wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 29: tmp_macro_masken_bez== |
||||
Die Tabelle tmp_macro_masken_bez wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 30: tmp_macro_feld_wert== |
||||
Die Tabelle tmp_macro_feld_wert wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 31: tmp_sx_captions== |
||||
Die Tabelle tmp_sx_captions wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 32: tmp_sichten== |
||||
Die Tabelle tmp_sichten wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 33: tmp_man_catalogue== |
||||
Die Tabelle tmp_man_catalogue wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 34: tmp_man_catalogue_rpt== |
||||
Die Tabelle tmp_man_catalogue_rpt wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 35: tmp_man_zahl_wert== |
||||
Die Tabelle tmp_man_zahl_wert wird nur temporär werdend des Ladens erzeugt. |
||||
|
||||
==Ladeschritt 36: tmp_kenn_zahl_wert== |
||||
Die Tabelle tmp_kenn_zahl_wert wird nur temporär werdend des Ladens erzeugt. |
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,2 +1,2 @@
@@ -1,2 +1,2 @@
|
||||
71681^Berichts ID^1^0^0^150^70^1^sql^200^0^0^^^^ |
||||
71682^Berichts Name^1^0^0^150^70^1^sql^200^0^0^^^^ |
||||
71682^Berichts Name^1^0^0^150^70^1^sql^200^0^0^^^^ |
||||
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
Loading…
Reference in new issue