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
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