Merge 6bacb8455969
This commit is contained in:
commit
8f15a876a9
|
@ -0,0 +1,14 @@
|
||||||
|
-- Apr 18, 2013 6:40:49 PM COT
|
||||||
|
-- IDEMPIERE-851 fitnesse improvements
|
||||||
|
UPDATE AD_Column SET IsAllowLogging='N',Updated=TO_DATE('2013-04-18 18:40:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=5903
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 18, 2013 6:42:14 PM COT
|
||||||
|
-- IDEMPIERE-851 fitnesse improvements
|
||||||
|
UPDATE AD_Column SET IsAllowLogging='N',Updated=TO_DATE('2013-04-18 18:42:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=11353
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
SELECT register_migration_script('201304181900_IDEMPIERE-851.sql') FROM dual
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
-- Apr 18, 2013 6:40:49 PM COT
|
||||||
|
-- IDEMPIERE-851 fitnesse improvements
|
||||||
|
UPDATE AD_Column SET IsAllowLogging='N',Updated=TO_TIMESTAMP('2013-04-18 18:40:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=5903
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Apr 18, 2013 6:42:14 PM COT
|
||||||
|
-- IDEMPIERE-851 fitnesse improvements
|
||||||
|
UPDATE AD_Column SET IsAllowLogging='N',Updated=TO_TIMESTAMP('2013-04-18 18:42:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=11353
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
SELECT register_migration_script('201304181900_IDEMPIERE-851.sql') FROM dual
|
||||||
|
;
|
|
@ -3,6 +3,7 @@ DECLARE
|
||||||
cmdsys VARCHAR2 (1000);
|
cmdsys VARCHAR2 (1000);
|
||||||
cmdnosys VARCHAR2 (1000);
|
cmdnosys VARCHAR2 (1000);
|
||||||
cmdseq VARCHAR2 (1000);
|
cmdseq VARCHAR2 (1000);
|
||||||
|
cmdcrseq VARCHAR2 (1000);
|
||||||
cmdupd VARCHAR2 (1000);
|
cmdupd VARCHAR2 (1000);
|
||||||
currentnextsys NUMBER (10);
|
currentnextsys NUMBER (10);
|
||||||
currentnext NUMBER (10);
|
currentnext NUMBER (10);
|
||||||
|
@ -10,6 +11,8 @@ DECLARE
|
||||||
Currentseq Number (10);
|
Currentseq Number (10);
|
||||||
Isnativeseqon Varchar2(1);
|
Isnativeseqon Varchar2(1);
|
||||||
sqlcmd VARCHAR2(200);
|
sqlcmd VARCHAR2(200);
|
||||||
|
seq_doesnot_exist EXCEPTION;
|
||||||
|
PRAGMA EXCEPTION_INIT(seq_doesnot_exist, -2289);
|
||||||
BEGIN
|
BEGIN
|
||||||
DBMS_OUTPUT.PUT_LINE ('Start');
|
DBMS_OUTPUT.PUT_LINE ('Start');
|
||||||
|
|
||||||
|
@ -20,6 +23,7 @@ BEGIN
|
||||||
FROM AD_COLUMN c
|
FROM AD_COLUMN c
|
||||||
WHERE t.ad_table_id = c.ad_table_id
|
WHERE t.ad_table_id = c.ad_table_id
|
||||||
AND c.columnname = t.tablename || '_ID')
|
AND c.columnname = t.tablename || '_ID')
|
||||||
|
AND IsView= 'N'
|
||||||
ORDER BY 1)
|
ORDER BY 1)
|
||||||
LOOP
|
LOOP
|
||||||
cmdsys :=
|
cmdsys :=
|
||||||
|
@ -87,17 +91,23 @@ BEGIN
|
||||||
|| 'WHERE Name = '''
|
|| 'WHERE Name = '''
|
||||||
|| r.Tablename
|
|| r.Tablename
|
||||||
|| ''' AND istableid = ''Y''';
|
|| ''' AND istableid = ''Y''';
|
||||||
|
BEGIN
|
||||||
|
EXECUTE IMMEDIATE cmdseq INTO currentseq, currentseqsys;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN seq_doesnot_exist THEN
|
||||||
|
cmdcrseq:= 'CREATE SEQUENCE '||Trim(R.Tablename)||'_SQ MINVALUE 1000000 MAXVALUE 2147483647 INCREMENT BY 1 START WITH 1000000';
|
||||||
|
Execute Immediate cmdcrseq;
|
||||||
|
EXECUTE IMMEDIATE cmdseq INTO currentseq, currentseqsys;
|
||||||
|
END;
|
||||||
ELSE
|
ELSE
|
||||||
cmdseq :=
|
cmdseq :=
|
||||||
'SELECT currentnext, currentnextsys FROM AD_Sequence '
|
'SELECT currentnext, currentnextsys FROM AD_Sequence '
|
||||||
|| 'WHERE Name = '''
|
|| 'WHERE Name = '''
|
||||||
|| r.tablename
|
|| r.tablename
|
||||||
|| ''' AND istableid = ''Y''';
|
|| ''' AND istableid = ''Y''';
|
||||||
|
EXECUTE IMMEDIATE cmdseq INTO currentseq, currentseqsys;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
EXECUTE IMMEDIATE cmdseq
|
|
||||||
INTO currentseq, currentseqsys;
|
|
||||||
|
|
||||||
IF currentnextsys <> currentseqsys OR (currentnext <> currentseq AND Isnativeseqon ='N')
|
IF currentnextsys <> currentseqsys OR (currentnext <> currentseq AND Isnativeseqon ='N')
|
||||||
THEN
|
THEN
|
||||||
DBMS_OUTPUT.PUT_LINE ( r.tablename
|
DBMS_OUTPUT.PUT_LINE ( r.tablename
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
CREATE OR REPLACE FUNCTION update_sequences() RETURNS void as $func$
|
|
||||||
-- TODO: Currently not inserting new sequences
|
-- TODO: Currently not inserting new sequences
|
||||||
|
CREATE OR REPLACE FUNCTION update_sequences() RETURNS void as $func$
|
||||||
DECLARE
|
DECLARE
|
||||||
cmdsys VARCHAR (1000);
|
cmdsys VARCHAR (1000);
|
||||||
cmdnosys VARCHAR (1000);
|
cmdnosys VARCHAR (1000);
|
||||||
cmdseq VARCHAR (1000);
|
cmdseq VARCHAR (1000);
|
||||||
|
cmdcrseq VARCHAR (1000);
|
||||||
cmdupd VARCHAR (1000);
|
cmdupd VARCHAR (1000);
|
||||||
currentnextsys NUMERIC (10);
|
currentnextsys NUMERIC (10);
|
||||||
currentnext NUMERIC (10);
|
currentnext NUMERIC (10);
|
||||||
|
@ -21,6 +22,7 @@ BEGIN
|
||||||
FROM AD_COLUMN c
|
FROM AD_COLUMN c
|
||||||
WHERE t.ad_table_id = c.ad_table_id
|
WHERE t.ad_table_id = c.ad_table_id
|
||||||
AND c.columnname = t.tablename || '_ID')
|
AND c.columnname = t.tablename || '_ID')
|
||||||
|
AND IsView= 'N'
|
||||||
ORDER BY 1)
|
ORDER BY 1)
|
||||||
LOOP
|
LOOP
|
||||||
cmdsys :=
|
cmdsys :=
|
||||||
|
@ -82,15 +84,22 @@ BEGIN
|
||||||
|| 'WHERE Name = '''
|
|| 'WHERE Name = '''
|
||||||
|| r.tablename
|
|| r.tablename
|
||||||
|| ''' AND istableid = ''Y''';
|
|| ''' AND istableid = ''Y''';
|
||||||
|
BEGIN
|
||||||
|
EXECUTE cmdseq INTO currentseq, currentseqsys;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN undefined_table THEN
|
||||||
|
cmdcrseq := 'CREATE SEQUENCE '||trim(r.tablename)||'_SQ INCREMENT 1 MINVALUE 1000000 MAXVALUE 2147483647 START '||currentseq;
|
||||||
|
EXECUTE cmdcrseq;
|
||||||
|
EXECUTE cmdseq INTO currentseq, currentseqsys;
|
||||||
|
END;
|
||||||
ELSE
|
ELSE
|
||||||
cmdseq :=
|
cmdseq :=
|
||||||
'SELECT currentnext, currentnextsys FROM AD_Sequence '
|
'SELECT currentnext, currentnextsys FROM AD_Sequence '
|
||||||
|| 'WHERE Name = '''
|
|| 'WHERE Name = '''
|
||||||
|| r.tablename
|
|| r.tablename
|
||||||
|| ''' AND istableid = ''Y''';
|
|| ''' AND istableid = ''Y''';
|
||||||
END IF;
|
|
||||||
|
|
||||||
EXECUTE cmdseq INTO currentseq, currentseqsys;
|
EXECUTE cmdseq INTO currentseq, currentseqsys;
|
||||||
|
END IF;
|
||||||
|
|
||||||
IF currentnextsys <> currentseqsys OR (currentnext <> currentseq AND isnativeseqon ='N')
|
IF currentnextsys <> currentseqsys OR (currentnext <> currentseq AND isnativeseqon ='N')
|
||||||
THEN
|
THEN
|
||||||
|
|
|
@ -194,7 +194,7 @@ public class AdempiereMonitor extends HttpServlet
|
||||||
body b = doc.getBody();
|
body b = doc.getBody();
|
||||||
//
|
//
|
||||||
p para = new p();
|
p para = new p();
|
||||||
a link = new a ("adempiereMonitor#" + serverID, "Return");
|
a link = new a ("idempiereMonitor#" + serverID, "Return");
|
||||||
para.addElement(link);
|
para.addElement(link);
|
||||||
b.addElement(para);
|
b.addElement(para);
|
||||||
//
|
//
|
||||||
|
@ -605,16 +605,16 @@ public class AdempiereMonitor extends HttpServlet
|
||||||
bb.addElement(table);
|
bb.addElement(table);
|
||||||
//
|
//
|
||||||
p para = new p();
|
p para = new p();
|
||||||
a link = new a ("adempiereMonitor?Action=Start_All", "Start All");
|
a link = new a ("idempiereMonitor?Action=Start_All", "Start All");
|
||||||
para.addElement(link);
|
para.addElement(link);
|
||||||
para.addElement(" - ");
|
para.addElement(" - ");
|
||||||
link = new a ("adempiereMonitor?Action=Stop_All", "Stop All");
|
link = new a ("idempiereMonitor?Action=Stop_All", "Stop All");
|
||||||
para.addElement(link);
|
para.addElement(link);
|
||||||
para.addElement(" - ");
|
para.addElement(" - ");
|
||||||
link = new a ("adempiereMonitor?Action=Reload", "Reload");
|
link = new a ("idempiereMonitor?Action=Reload", "Reload");
|
||||||
para.addElement(link);
|
para.addElement(link);
|
||||||
para.addElement(" - ");
|
para.addElement(" - ");
|
||||||
link = new a ("adempiereMonitor", "Refresh");
|
link = new a ("idempiereMonitor", "Refresh");
|
||||||
para.addElement(link);
|
para.addElement(link);
|
||||||
bb.addElement(para);
|
bb.addElement(para);
|
||||||
|
|
||||||
|
@ -659,7 +659,7 @@ public class AdempiereMonitor extends HttpServlet
|
||||||
if (server.isAlive())
|
if (server.isAlive())
|
||||||
{
|
{
|
||||||
String msg = "Stop";
|
String msg = "Stop";
|
||||||
link = new a ("adempiereMonitor?Action=Stop_" + server.getServer().getServerID(), msg);
|
link = new a ("idempiereMonitor?Action=Stop_" + server.getServer().getServerID(), msg);
|
||||||
if (server.getServer().isSleeping())
|
if (server.getServer().isSleeping())
|
||||||
{
|
{
|
||||||
line.addElement(new th().addElement("Sleeping"));
|
line.addElement(new th().addElement("Sleeping"));
|
||||||
|
@ -680,7 +680,7 @@ public class AdempiereMonitor extends HttpServlet
|
||||||
{
|
{
|
||||||
String msg = "Start";
|
String msg = "Start";
|
||||||
line.addElement(new th().addElement("Not Started"));
|
line.addElement(new th().addElement("Not Started"));
|
||||||
link = new a ("adempiereMonitor?Action=Start_" + server.getServer().getServerID(), msg);
|
link = new a ("idempiereMonitor?Action=Start_" + server.getServer().getServerID(), msg);
|
||||||
line.addElement(new td().addElement(link));
|
line.addElement(new td().addElement(link));
|
||||||
}
|
}
|
||||||
table.addElement(line);
|
table.addElement(line);
|
||||||
|
@ -704,7 +704,7 @@ public class AdempiereMonitor extends HttpServlet
|
||||||
td td = new td();
|
td td = new td();
|
||||||
td.addElement(WebEnv.getCellContent(server.getServer().getDateNextRun(false)));
|
td.addElement(WebEnv.getCellContent(server.getServer().getDateNextRun(false)));
|
||||||
td.addElement(" - ");
|
td.addElement(" - ");
|
||||||
link = new a ("adempiereMonitor?RunNow=" + server.getServer().getServerID(), "(Run Now)");
|
link = new a ("idempiereMonitor?RunNow=" + server.getServer().getServerID(), "(Run Now)");
|
||||||
td.addElement(link);
|
td.addElement(link);
|
||||||
line.addElement(td);
|
line.addElement(td);
|
||||||
table.addElement(line);
|
table.addElement(line);
|
||||||
|
@ -720,10 +720,10 @@ public class AdempiereMonitor extends HttpServlet
|
||||||
link = new a ("#top", "Top");
|
link = new a ("#top", "Top");
|
||||||
bb.addElement(link);
|
bb.addElement(link);
|
||||||
bb.addElement(" - ");
|
bb.addElement(" - ");
|
||||||
link = new a ("adempiereMonitor?Log=" + server.getServer().getServerID(), "Log");
|
link = new a ("idempiereMonitor?Log=" + server.getServer().getServerID(), "Log");
|
||||||
bb.addElement(link);
|
bb.addElement(link);
|
||||||
bb.addElement(" - ");
|
bb.addElement(" - ");
|
||||||
link = new a ("adempiereMonitor", "Refresh");
|
link = new a ("idempiereMonitor", "Refresh");
|
||||||
bb.addElement(link);
|
bb.addElement(link);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -928,13 +928,13 @@ public class AdempiereMonitor extends HttpServlet
|
||||||
// Cache Reset
|
// Cache Reset
|
||||||
line = new tr();
|
line = new tr();
|
||||||
line.addElement(new th().addElement(CacheMgt.get().toStringX()));
|
line.addElement(new th().addElement(CacheMgt.get().toStringX()));
|
||||||
line.addElement(new td().addElement(new a ("adempiereMonitor?CacheReset=Yes", "Reset Cache")));
|
line.addElement(new td().addElement(new a ("idempiereMonitor?CacheReset=Yes", "Reset Cache")));
|
||||||
table.addElement(line);
|
table.addElement(line);
|
||||||
|
|
||||||
// Trace Level
|
// Trace Level
|
||||||
line = new tr();
|
line = new tr();
|
||||||
line.addElement(new th().addElement(new label("TraceLevel").addElement("Trace Log Level")));
|
line.addElement(new th().addElement(new label("TraceLevel").addElement("Trace Log Level")));
|
||||||
form myForm = new form("adempiereMonitor", form.METHOD_POST, form.ENC_DEFAULT);
|
form myForm = new form("idempiereMonitor", form.METHOD_POST, form.ENC_DEFAULT);
|
||||||
// LogLevel Selection
|
// LogLevel Selection
|
||||||
option[] options = new option[CLogMgt.LEVELS.length];
|
option[] options = new option[CLogMgt.LEVELS.length];
|
||||||
for (int i = 0; i < options.length; i++)
|
for (int i = 0; i < options.length; i++)
|
||||||
|
@ -953,12 +953,12 @@ public class AdempiereMonitor extends HttpServlet
|
||||||
line = new tr();
|
line = new tr();
|
||||||
CLogFile fileHandler = CLogFile.get (true, null, false);
|
CLogFile fileHandler = CLogFile.get (true, null, false);
|
||||||
line.addElement(new th().addElement("Trace File"));
|
line.addElement(new th().addElement("Trace File"));
|
||||||
line.addElement(new td().addElement(new a ("adempiereMonitor?Trace=" + fileHandler.getFileName(), "Current")));
|
line.addElement(new td().addElement(new a ("idempiereMonitor?Trace=" + fileHandler.getFileName(), "Current")));
|
||||||
table.addElement(line);
|
table.addElement(line);
|
||||||
//
|
//
|
||||||
line = new tr();
|
line = new tr();
|
||||||
line.addElement(new td().addElement(new a ("adempiereMonitor?Trace=ROTATE", "Rotate Trace Log")));
|
line.addElement(new td().addElement(new a ("idempiereMonitor?Trace=ROTATE", "Rotate Trace Log")));
|
||||||
line.addElement(new td().addElement(new a ("adempiereMonitor?Trace=DELETE", "Delete all Trace Logs")));
|
line.addElement(new td().addElement(new a ("idempiereMonitor?Trace=DELETE", "Delete all Trace Logs")));
|
||||||
table.addElement(line);
|
table.addElement(line);
|
||||||
//
|
//
|
||||||
bb.addElement(table);
|
bb.addElement(table);
|
||||||
|
@ -980,7 +980,7 @@ public class AdempiereMonitor extends HttpServlet
|
||||||
if (i != 0)
|
if (i != 0)
|
||||||
p.addElement(" - ");
|
p.addElement(" - ");
|
||||||
String fileName = logs[i].getAbsolutePath();
|
String fileName = logs[i].getAbsolutePath();
|
||||||
a link = new a ("adempiereMonitor?Trace=" + fileName, fileName);
|
a link = new a ("idempiereMonitor?Trace=" + fileName, fileName);
|
||||||
p.addElement(link);
|
p.addElement(link);
|
||||||
int size = (int)(logs[i].length()/1024);
|
int size = (int)(logs[i].length()/1024);
|
||||||
if (size < 1024)
|
if (size < 1024)
|
||||||
|
@ -1006,7 +1006,7 @@ public class AdempiereMonitor extends HttpServlet
|
||||||
MClient client = clients[i];
|
MClient client = clients[i];
|
||||||
if (i > 0)
|
if (i > 0)
|
||||||
p.addElement(" - ");
|
p.addElement(" - ");
|
||||||
p.addElement(new a("adempiereMonitor?EMail=" + client.getAD_Client_ID(), client.getName()));
|
p.addElement(new a("idempiereMonitor?EMail=" + client.getAD_Client_ID(), client.getName()));
|
||||||
}
|
}
|
||||||
if (clients.length == 0)
|
if (clients.length == 0)
|
||||||
p.addElement(" ");
|
p.addElement(" ");
|
||||||
|
|
|
@ -66,7 +66,8 @@ public class AssertRecord extends TableFixture {
|
||||||
MTable table = null;
|
MTable table = null;
|
||||||
POInfo poinfo = null;
|
POInfo poinfo = null;
|
||||||
boolean alreadyread = false;
|
boolean alreadyread = false;
|
||||||
String whereclause = new String("");
|
StringBuilder whereclause = new StringBuilder("");
|
||||||
|
boolean isErrorExpected = false;
|
||||||
for (int i = 0; i < rows; i++) {
|
for (int i = 0; i < rows; i++) {
|
||||||
String cell_title = getText(i, 0);
|
String cell_title = getText(i, 0);
|
||||||
String cell_value = getText(i, 1);
|
String cell_value = getText(i, 1);
|
||||||
|
@ -89,8 +90,10 @@ public class AssertRecord extends TableFixture {
|
||||||
exception(getCell(i, 1), new Exception("*Where* must be defined in second row"));
|
exception(getCell(i, 1), new Exception("*Where* must be defined in second row"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
whereclause = cell_value;
|
whereclause.append(cell_value);
|
||||||
} else if (cell_title.equalsIgnoreCase("*Read*")) {
|
} else if (cell_title.equalsIgnoreCase("*Read*") || cell_title.equalsIgnoreCase("*Read*Error*") )
|
||||||
|
{
|
||||||
|
isErrorExpected = "*Read*Error*".equalsIgnoreCase(cell_title);
|
||||||
if (! tableOK) {
|
if (! tableOK) {
|
||||||
getCell(i, 1).addToBody("Table " + tableName + " does not exist");
|
getCell(i, 1).addToBody("Table " + tableName + " does not exist");
|
||||||
wrong(i, 1);
|
wrong(i, 1);
|
||||||
|
@ -110,20 +113,40 @@ public class AssertRecord extends TableFixture {
|
||||||
rs = pstmt.executeQuery();
|
rs = pstmt.executeQuery();
|
||||||
if (rs.next()) {
|
if (rs.next()) {
|
||||||
gpo = table.getPO(rs, null);
|
gpo = table.getPO(rs, null);
|
||||||
|
if (isErrorExpected) {
|
||||||
|
wrong(i,1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
getCell(i, 1).addToBody("No record found: " + sql);
|
getCell(i, 1).addToBody("No record found: " + sql);
|
||||||
|
boolean ok = Util.evaluateError("No record found: ", cell_value, isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(i,1);
|
||||||
|
} else {
|
||||||
wrong(i,1);
|
wrong(i,1);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (rs.next()) {
|
if (rs.next()) {
|
||||||
getCell(i, 1).addToBody("More than one record found: " + sql);
|
getCell(i, 1).addToBody("More than one record found: " + sql);
|
||||||
|
boolean ok = Util.evaluateError("More than one record found: ", cell_value, isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(i,1);
|
||||||
|
} else {
|
||||||
wrong(i,1);
|
wrong(i,1);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (SQLException e)
|
catch (SQLException e)
|
||||||
{
|
{
|
||||||
|
boolean ok = Util.evaluateError(e.getMessage(), cell_value, isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(getCell(i, 1));
|
||||||
|
} else {
|
||||||
exception(getCell(i, 1), e);
|
exception(getCell(i, 1), e);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
@ -133,7 +156,9 @@ public class AssertRecord extends TableFixture {
|
||||||
pstmt = null;
|
pstmt = null;
|
||||||
}
|
}
|
||||||
right(i, 1);
|
right(i, 1);
|
||||||
|
if (gpo != null) {
|
||||||
getCell(i, 1).addToBody(gpo.toString());
|
getCell(i, 1).addToBody(gpo.toString());
|
||||||
|
}
|
||||||
alreadyread = true;
|
alreadyread = true;
|
||||||
} else {
|
} else {
|
||||||
// columns
|
// columns
|
||||||
|
@ -142,11 +167,12 @@ public class AssertRecord extends TableFixture {
|
||||||
// not read yet - add value to where clause
|
// not read yet - add value to where clause
|
||||||
String value_evaluated = Util.evaluate(ctx, windowNo, cell_value, getCell(i, 1));
|
String value_evaluated = Util.evaluate(ctx, windowNo, cell_value, getCell(i, 1));
|
||||||
if (whereclause.length() > 0)
|
if (whereclause.length() > 0)
|
||||||
whereclause = whereclause + " AND ";
|
whereclause.append(" AND ");
|
||||||
whereclause = whereclause + cell_title + "=" + value_evaluated;
|
whereclause.append(cell_title).append("=").append(value_evaluated);
|
||||||
} else {
|
} else {
|
||||||
// already read, compare the value of db with the context variable or formula
|
// already read, compare the value of db with the context variable or formula
|
||||||
String title_evaluated = "";
|
String title_evaluated = "";
|
||||||
|
if (gpo != null) {
|
||||||
Object result = gpo.get_Value(cell_title);
|
Object result = gpo.get_Value(cell_title);
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
getCell(i, 0).addToBody("<hr/>" + result.toString());
|
getCell(i, 0).addToBody("<hr/>" + result.toString());
|
||||||
|
@ -167,6 +193,7 @@ public class AssertRecord extends TableFixture {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// set the variables at the end
|
// set the variables at the end
|
||||||
// read - set context variables
|
// read - set context variables
|
||||||
for (int idx = 0; idx < poinfo.getColumnCount(); idx++) {
|
for (int idx = 0; idx < poinfo.getColumnCount(); idx++) {
|
||||||
|
|
|
@ -64,8 +64,10 @@ public class CreateRecord extends TableFixture {
|
||||||
String columnName = null;
|
String columnName = null;
|
||||||
boolean tableOK = false;
|
boolean tableOK = false;
|
||||||
boolean columnsOK = true;
|
boolean columnsOK = true;
|
||||||
|
boolean isErrorExpected = "*Save*Error*".equalsIgnoreCase(getText(rows-1, 0));
|
||||||
MTable table = null;
|
MTable table = null;
|
||||||
POInfo poinfo = null;
|
POInfo poinfo = null;
|
||||||
|
|
||||||
for (int i = 0; i < rows; i++) {
|
for (int i = 0; i < rows; i++) {
|
||||||
String cell_title = getText(i, 0);
|
String cell_title = getText(i, 0);
|
||||||
String cell_value = getText(i, 1);
|
String cell_value = getText(i, 1);
|
||||||
|
@ -79,6 +81,10 @@ public class CreateRecord extends TableFixture {
|
||||||
// TODO : verify if the record already exists
|
// TODO : verify if the record already exists
|
||||||
table = MTable.get(ctx, tableName);
|
table = MTable.get(ctx, tableName);
|
||||||
if (table == null || table.get_ID() <= 0) {
|
if (table == null || table.get_ID() <= 0) {
|
||||||
|
boolean ok = Util.evaluateError("Table " + tableName + " does not exist", cell_value, isErrorExpected);
|
||||||
|
if (ok)
|
||||||
|
right(i,1);
|
||||||
|
else
|
||||||
wrong(i,1);
|
wrong(i,1);
|
||||||
tableOK = false;
|
tableOK = false;
|
||||||
} else {
|
} else {
|
||||||
|
@ -86,13 +92,18 @@ public class CreateRecord extends TableFixture {
|
||||||
gpo = table.getPO(0, null);
|
gpo = table.getPO(0, null);
|
||||||
}
|
}
|
||||||
poinfo = POInfo.getPOInfo(ctx, table!=null ? table.getAD_Table_ID() : 0);
|
poinfo = POInfo.getPOInfo(ctx, table!=null ? table.getAD_Table_ID() : 0);
|
||||||
} else if (cell_title.equalsIgnoreCase("*Save*")) {
|
} else if (cell_title.equalsIgnoreCase("*Save*") || cell_title.equalsIgnoreCase("*Save*Error*")) {
|
||||||
if (i != rows-1) {
|
if (i != rows-1) {
|
||||||
exception(getCell(i, 1), new Exception("*Save* must be called in last row"));
|
exception(getCell(i, 1), new Exception("*Save* must be called in last row"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! tableOK) {
|
if (! tableOK) {
|
||||||
getCell(i, 1).addToBody("Table " + tableName + " does not exist");
|
getCell(i, 1).addToBody("Table " + tableName + " does not exist");
|
||||||
|
boolean ok = Util.evaluateError("Table " + tableName + " does not exist", cell_value, isErrorExpected);
|
||||||
|
if (ok)
|
||||||
|
right(i,1);
|
||||||
|
else
|
||||||
wrong(i,1);
|
wrong(i,1);
|
||||||
} else {
|
} else {
|
||||||
if (columnsOK) {
|
if (columnsOK) {
|
||||||
|
@ -107,9 +118,17 @@ public class CreateRecord extends TableFixture {
|
||||||
msg.append("Error: " + vnp.getName());
|
msg.append("Error: " + vnp.getName());
|
||||||
}
|
}
|
||||||
getCell(i, 1).addToBody(msg.toString());
|
getCell(i, 1).addToBody(msg.toString());
|
||||||
|
boolean ok = Util.evaluateError(msg.toString(),cell_value,isErrorExpected);
|
||||||
|
if (ok)
|
||||||
|
right(i,1);
|
||||||
|
else
|
||||||
|
wrong(i,1);
|
||||||
|
} else {
|
||||||
|
if (isErrorExpected) {
|
||||||
wrong(i,1);
|
wrong(i,1);
|
||||||
} else {
|
} else {
|
||||||
right(i, 1);
|
right(i, 1);
|
||||||
|
}
|
||||||
getCell(i, 1).addToBody(gpo.toString());
|
getCell(i, 1).addToBody(gpo.toString());
|
||||||
for (int idx = 0; idx < poinfo.getColumnCount(); idx++) {
|
for (int idx = 0; idx < poinfo.getColumnCount(); idx++) {
|
||||||
String colname = poinfo.getColumnName(idx);
|
String colname = poinfo.getColumnName(idx);
|
||||||
|
@ -126,7 +145,7 @@ public class CreateRecord extends TableFixture {
|
||||||
columnName = cell_title;
|
columnName = cell_title;
|
||||||
int idxcol = gpo.get_ColumnIndex(columnName);
|
int idxcol = gpo.get_ColumnIndex(columnName);
|
||||||
if (idxcol < 0) {
|
if (idxcol < 0) {
|
||||||
wrong(i, 0);
|
wrong(i,1);
|
||||||
// column does not exist in dictionary - anyways try custom column in case it exists in table
|
// column does not exist in dictionary - anyways try custom column in case it exists in table
|
||||||
gpo.set_CustomColumnReturningBoolean(columnName, cell_value);
|
gpo.set_CustomColumnReturningBoolean(columnName, cell_value);
|
||||||
} else {
|
} else {
|
||||||
|
@ -175,10 +194,18 @@ public class CreateRecord extends TableFixture {
|
||||||
try {
|
try {
|
||||||
if (!gpo.set_ValueOfColumnReturningBoolean(columnName, value)) {
|
if (!gpo.set_ValueOfColumnReturningBoolean(columnName, value)) {
|
||||||
columnsOK = false;
|
columnsOK = false;
|
||||||
|
boolean ok = Util.evaluateError("Cannot set value of column", cell_value, isErrorExpected);
|
||||||
|
if (ok)
|
||||||
|
right(getCell(i, 1));
|
||||||
|
else
|
||||||
exception(getCell(i, 1), new Exception("Cannot set value of column"));
|
exception(getCell(i, 1), new Exception("Cannot set value of column"));
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
columnsOK = false;
|
columnsOK = false;
|
||||||
|
boolean ok = Util.evaluateError(e.getMessage(), cell_value, isErrorExpected);
|
||||||
|
if (ok)
|
||||||
|
right(getCell(i, 1));
|
||||||
|
else
|
||||||
exception(getCell(i, 1), e);
|
exception(getCell(i, 1), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,172 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* This file is part of iDempiere ERP Bazaar *
|
||||||
|
* http://www.idempiere.org *
|
||||||
|
* *
|
||||||
|
* Copyright (C) Contributors *
|
||||||
|
* *
|
||||||
|
* 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 2 *
|
||||||
|
* 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, write to the Free Software *
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
|
||||||
|
* MA 02110-1301, USA. *
|
||||||
|
* *
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
package org.idempiere.fitnesse.fixture;
|
||||||
|
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.compiere.model.MTable;
|
||||||
|
import org.compiere.model.PO;
|
||||||
|
import org.compiere.util.DB;
|
||||||
|
|
||||||
|
import fitnesse.fixtures.TableFixture;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author juliana
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class DeleteRecord extends TableFixture {
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see fitnesse.fixtures.TableFixture#doStaticTable(int)
|
||||||
|
*/
|
||||||
|
|
||||||
|
private volatile static Instance adempiereInstance = null;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doStaticTable(int rows) {
|
||||||
|
adempiereInstance = Static_iDempiereInstance.getInstance();
|
||||||
|
|
||||||
|
if (adempiereInstance.getAdempiereService() == null
|
||||||
|
|| !adempiereInstance.getAdempiereService().isLoggedIn()) {
|
||||||
|
wrong(rows - 1, 1);
|
||||||
|
getCell(rows - 1, 1).addToBody("not logged in");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Properties ctx = adempiereInstance.getAdempiereService().getCtx();
|
||||||
|
int windowNo = adempiereInstance.getAdempiereService().getWindowNo();
|
||||||
|
|
||||||
|
PO gpo = null;
|
||||||
|
String tableName = new String("");
|
||||||
|
boolean tableOK = false;
|
||||||
|
MTable table = null;
|
||||||
|
|
||||||
|
boolean alreadyread = false;
|
||||||
|
StringBuilder whereclause = new StringBuilder("");
|
||||||
|
boolean isErrorExpected = false;
|
||||||
|
String msgerror = null;
|
||||||
|
|
||||||
|
for (int i = 0; i < rows; i++) {
|
||||||
|
String cell_title = getText(i, 0);
|
||||||
|
String cell_value = getText(i, 1);
|
||||||
|
if (cell_title.equalsIgnoreCase("*Table*")) {
|
||||||
|
if (i > 0) {
|
||||||
|
exception(getCell(i, 1), new Exception("*Table* must be defined in first row"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
tableName = cell_value;
|
||||||
|
table = MTable.get(ctx, tableName);
|
||||||
|
if (table == null || table.get_ID() <= 0) {
|
||||||
|
wrong(i, 1);
|
||||||
|
tableOK = false;
|
||||||
|
} else {
|
||||||
|
tableOK = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (cell_title.equalsIgnoreCase("*Where*")) {
|
||||||
|
if (i != 1) {
|
||||||
|
exception(getCell(i, 1), new Exception("*Where* must be defined in second row"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
whereclause.append(cell_value);
|
||||||
|
} else if (cell_title.equalsIgnoreCase("*Delete*") || cell_title.equalsIgnoreCase("*Delete*Error*")) {
|
||||||
|
isErrorExpected = "*Delete*Error*".equalsIgnoreCase(cell_title);
|
||||||
|
msgerror = cell_value;
|
||||||
|
if (!tableOK) {
|
||||||
|
getCell(i, 1).addToBody("Table " + tableName + " does not exist");
|
||||||
|
wrong(i, 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (whereclause.length() == 0) {
|
||||||
|
getCell(i, 1).addToBody("No where clause");
|
||||||
|
wrong(i, 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String sql = "SELECT * FROM " + tableName + " WHERE "+ whereclause;
|
||||||
|
PreparedStatement pstmt = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
try {
|
||||||
|
pstmt = DB.prepareStatement(sql, null);
|
||||||
|
rs = pstmt.executeQuery();
|
||||||
|
if (rs.next()) {
|
||||||
|
gpo = table.getPO(rs, null);
|
||||||
|
} else {
|
||||||
|
getCell(i, 1).addToBody("No record found: " + sql);
|
||||||
|
boolean ok = Util.evaluateError("No record found: ",cell_value, isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(i, 1);
|
||||||
|
} else {
|
||||||
|
wrong(i, 1);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (rs.next()) {
|
||||||
|
getCell(i, 1).addToBody("More than one record found: " + sql);
|
||||||
|
boolean ok = Util.evaluateError("More than one record found: ", cell_value,isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(i, 1);
|
||||||
|
} else {
|
||||||
|
wrong(i, 1);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gpo != null) {
|
||||||
|
gpo.deleteEx(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
boolean ok = Util.evaluateError(e.getMessage(), msgerror, isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(getCell(i, 1));
|
||||||
|
} else {
|
||||||
|
exception(getCell(i, 1), e);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
} finally {
|
||||||
|
DB.close(rs, pstmt);
|
||||||
|
rs = null;
|
||||||
|
pstmt = null;
|
||||||
|
}
|
||||||
|
right(i, 1);
|
||||||
|
alreadyread = true;
|
||||||
|
} else {
|
||||||
|
// columns
|
||||||
|
if (tableOK) {
|
||||||
|
String value_evaluated = Util.evaluate(ctx, windowNo,cell_value, getCell(i, 1));
|
||||||
|
if (!alreadyread) {
|
||||||
|
// not read yet - add value to where clause
|
||||||
|
if (whereclause.length() > 0)
|
||||||
|
whereclause.append(" AND ");
|
||||||
|
whereclause.append(cell_title).append("=").append(value_evaluated);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}//end while
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -54,6 +54,8 @@ public class Login extends TableFixture {
|
||||||
if (adempiereInstance == null) {
|
if (adempiereInstance == null) {
|
||||||
adempiereInstance = Static_iDempiereInstance.getInstance();
|
adempiereInstance = Static_iDempiereInstance.getInstance();
|
||||||
}
|
}
|
||||||
|
boolean isErrorExpected = "*Login*Error*".equalsIgnoreCase(getText(rows-1, 0));
|
||||||
|
String msgerror = getText(rows-1, 1);
|
||||||
for (int i = 0; i < rows; i++) {
|
for (int i = 0; i < rows; i++) {
|
||||||
String cell_title = getText(i, 0);
|
String cell_title = getText(i, 0);
|
||||||
String cell_value = getText(i, 1);
|
String cell_value = getText(i, 1);
|
||||||
|
@ -92,7 +94,7 @@ public class Login extends TableFixture {
|
||||||
exception(getCell(i, 1), e);
|
exception(getCell(i, 1), e);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
} else if (cell_title.equalsIgnoreCase("*Login*")) {
|
} else if (cell_title.equalsIgnoreCase("*Login*") || cell_title.equalsIgnoreCase("*Login*Error*")) {
|
||||||
if (i != rows-1) {
|
if (i != rows-1) {
|
||||||
exception(getCell(i, 1), new Exception("*Login* must be called in last row"));
|
exception(getCell(i, 1), new Exception("*Login* must be called in last row"));
|
||||||
return;
|
return;
|
||||||
|
@ -104,18 +106,35 @@ public class Login extends TableFixture {
|
||||||
|| m_password == null || m_password.length() == 0
|
|| m_password == null || m_password.length() == 0
|
||||||
|| m_role_id < 0
|
|| m_role_id < 0
|
||||||
|| m_client_id < 0) {
|
|| m_client_id < 0) {
|
||||||
|
|
||||||
|
boolean ok = Util.evaluateError("Incomplete data to login, needed User|Password|AD_Role_ID|AD_Client_ID", msgerror, isErrorExpected);
|
||||||
|
if (ok)
|
||||||
|
right(i,1);
|
||||||
|
else
|
||||||
exception(getCell(rows-1, 1), new Exception("Incomplete data to login, needed User|Password|AD_Role_ID|AD_Client_ID"));
|
exception(getCell(rows-1, 1), new Exception("Incomplete data to login, needed User|Password|AD_Role_ID|AD_Client_ID"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
String msg = modelLogin();
|
String msg = modelLogin();
|
||||||
if (msg == null || msg.length() == 0) {
|
if (msg == null || msg.length() == 0) {
|
||||||
MSession.get (Env.getCtx(), true);// Start Session
|
MSession.get (Env.getCtx(), true);// Start Session
|
||||||
|
if (isErrorExpected) {
|
||||||
|
wrong(rows-1, 0);
|
||||||
|
wrong(rows-1, 1);
|
||||||
|
} else {
|
||||||
right(rows-1, 0);
|
right(rows-1, 0);
|
||||||
right(rows-1, 1);
|
right(rows-1, 1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
boolean ok = Util.evaluateError(msg, msgerror, isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(rows-1, 0);
|
||||||
} else {
|
} else {
|
||||||
wrong(rows-1, 0);
|
wrong(rows-1, 0);
|
||||||
exception(getCell(rows-1, 1), new Exception(msg));
|
exception(getCell(rows-1, 1), new Exception(msg));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -67,6 +67,7 @@ public class ReadRecord extends TableFixture {
|
||||||
POInfo poinfo = null;
|
POInfo poinfo = null;
|
||||||
boolean alreadyread = false;
|
boolean alreadyread = false;
|
||||||
String whereclause = new String("");
|
String whereclause = new String("");
|
||||||
|
boolean isErrorExpected = false;
|
||||||
for (int i = 0; i < rows; i++) {
|
for (int i = 0; i < rows; i++) {
|
||||||
String cell_title = getText(i, 0);
|
String cell_title = getText(i, 0);
|
||||||
String cell_value = getText(i, 1);
|
String cell_value = getText(i, 1);
|
||||||
|
@ -90,12 +91,13 @@ public class ReadRecord extends TableFixture {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
whereclause = cell_value;
|
whereclause = cell_value;
|
||||||
} else if (cell_title.equalsIgnoreCase("*Read*")) {
|
} else if (cell_title.equalsIgnoreCase("*Read*") || cell_title.equalsIgnoreCase("*Read*Error*")) {
|
||||||
if (! tableOK) {
|
if (! tableOK) {
|
||||||
getCell(i, 1).addToBody("Table " + tableName + " does not exist");
|
getCell(i, 1).addToBody("Table " + tableName + " does not exist");
|
||||||
wrong(i, 1);
|
wrong(i, 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
isErrorExpected="*Read*Error*".equalsIgnoreCase(cell_title);
|
||||||
if (whereclause.length() == 0) {
|
if (whereclause.length() == 0) {
|
||||||
getCell(i, 1).addToBody("No where clause");
|
getCell(i, 1).addToBody("No where clause");
|
||||||
wrong(i, 1);
|
wrong(i, 1);
|
||||||
|
@ -110,20 +112,38 @@ public class ReadRecord extends TableFixture {
|
||||||
rs = pstmt.executeQuery();
|
rs = pstmt.executeQuery();
|
||||||
if (rs.next()) {
|
if (rs.next()) {
|
||||||
gpo = table.getPO(rs, null);
|
gpo = table.getPO(rs, null);
|
||||||
|
if (isErrorExpected) {
|
||||||
|
wrong(i,1);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
getCell(i, 1).addToBody("No record found: " + sql);
|
getCell(i, 1).addToBody("No record found: " + sql);
|
||||||
|
boolean ok = Util.evaluateError("No record found: ", cell_value, isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(i,1);
|
||||||
|
} else {
|
||||||
wrong(i,1);
|
wrong(i,1);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (rs.next()) {
|
if (rs.next()) {
|
||||||
getCell(i, 1).addToBody("More than one record found: " + sql);
|
getCell(i, 1).addToBody("More than one record found: " + sql);
|
||||||
|
boolean ok = Util.evaluateError("More than one record found: ",cell_value,isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(i,1);
|
||||||
|
} else {
|
||||||
wrong(i,1);
|
wrong(i,1);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (SQLException e)
|
catch (SQLException e)
|
||||||
{
|
{
|
||||||
|
boolean ok = Util.evaluateError(e.getMessage(),cell_value,isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(getCell(i, 1));
|
||||||
|
} else {
|
||||||
exception(getCell(i, 1), e);
|
exception(getCell(i, 1), e);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
@ -133,7 +153,9 @@ public class ReadRecord extends TableFixture {
|
||||||
pstmt = null;
|
pstmt = null;
|
||||||
}
|
}
|
||||||
right(i, 1);
|
right(i, 1);
|
||||||
|
if (gpo != null) {
|
||||||
getCell(i, 1).addToBody(gpo.toString());
|
getCell(i, 1).addToBody(gpo.toString());
|
||||||
|
}
|
||||||
// read - set context variables
|
// read - set context variables
|
||||||
for (int idx = 0; idx < poinfo.getColumnCount(); idx++) {
|
for (int idx = 0; idx < poinfo.getColumnCount(); idx++) {
|
||||||
String colname = poinfo.getColumnName(idx);
|
String colname = poinfo.getColumnName(idx);
|
||||||
|
@ -153,6 +175,7 @@ public class ReadRecord extends TableFixture {
|
||||||
whereclause = whereclause + cell_title + "=" + value_evaluated;
|
whereclause = whereclause + cell_title + "=" + value_evaluated;
|
||||||
} else {
|
} else {
|
||||||
// already read, show the value of context variable
|
// already read, show the value of context variable
|
||||||
|
if (gpo != null) {
|
||||||
Object result = gpo.get_Value(cell_title);
|
Object result = gpo.get_Value(cell_title);
|
||||||
if (result != null)
|
if (result != null)
|
||||||
getCell(i, 1).addToBody(result.toString());
|
getCell(i, 1).addToBody(result.toString());
|
||||||
|
@ -160,6 +183,7 @@ public class ReadRecord extends TableFixture {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} // doStaticTable
|
} // doStaticTable
|
||||||
|
|
||||||
} // AdempiereReadRecord
|
} // AdempiereReadRecord
|
||||||
|
|
|
@ -83,6 +83,8 @@ public class RunProcess extends TableFixture {
|
||||||
HashMap<String,Object> fmap = new HashMap<String,Object>();
|
HashMap<String,Object> fmap = new HashMap<String,Object>();
|
||||||
int recordID = 0;
|
int recordID = 0;
|
||||||
String docAction = null;
|
String docAction = null;
|
||||||
|
boolean isErrorExpected = "*Run*Error*".equalsIgnoreCase(getText(rows-1, 0));
|
||||||
|
String msgerror1 = getText(rows-1, 1);
|
||||||
for (int i = 0; i < rows; i++) {
|
for (int i = 0; i < rows; i++) {
|
||||||
String cell_title = getText(i, 0);
|
String cell_title = getText(i, 0);
|
||||||
String cell_value = getText(i, 1);
|
String cell_value = getText(i, 1);
|
||||||
|
@ -94,7 +96,12 @@ public class RunProcess extends TableFixture {
|
||||||
String processValue = cell_value;
|
String processValue = cell_value;
|
||||||
int processID = MProcess.getProcess_ID(processValue, null);
|
int processID = MProcess.getProcess_ID(processValue, null);
|
||||||
if (processID <= 0) {
|
if (processID <= 0) {
|
||||||
|
boolean ok = Util.evaluateError(msgerror1,"Process with Value=" + processValue + " doesn't exist", isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(getCell(i, 1));
|
||||||
|
} else {
|
||||||
exception(getCell(i, 1), new Exception("Process with Value=" + processValue + " doesn't exist"));
|
exception(getCell(i, 1), new Exception("Process with Value=" + processValue + " doesn't exist"));
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
process = new MProcess(ctx, processID, null);
|
process = new MProcess(ctx, processID, null);
|
||||||
|
@ -106,10 +113,15 @@ public class RunProcess extends TableFixture {
|
||||||
int processID = getInt(i, 1);
|
int processID = getInt(i, 1);
|
||||||
process = new MProcess(ctx, processID, null);
|
process = new MProcess(ctx, processID, null);
|
||||||
if (process == null || process.get_ID() <= 0) {
|
if (process == null || process.get_ID() <= 0) {
|
||||||
|
boolean ok = Util.evaluateError(msgerror1,"Process with ID=" + processID + " doesn't exist", isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(getCell(i, 1));
|
||||||
|
} else {
|
||||||
exception(getCell(i, 1), new Exception("Process with ID=" + processID + " doesn't exist"));
|
exception(getCell(i, 1), new Exception("Process with ID=" + processID + " doesn't exist"));
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (cell_title.equalsIgnoreCase("*Run*")) {
|
} else if (cell_title.equalsIgnoreCase("*Run*") || cell_title.equalsIgnoreCase("*Run*Error*")) {
|
||||||
if (i != rows-1) {
|
if (i != rows-1) {
|
||||||
exception(getCell(i, 1), new Exception("*Run* must be called in last row"));
|
exception(getCell(i, 1), new Exception("*Run* must be called in last row"));
|
||||||
return;
|
return;
|
||||||
|
@ -118,8 +130,14 @@ public class RunProcess extends TableFixture {
|
||||||
pInstance = new MPInstance (process, 0);
|
pInstance = new MPInstance (process, 0);
|
||||||
MPInstancePara[] iParams = pInstance.getParameters();
|
MPInstancePara[] iParams = pInstance.getParameters();
|
||||||
String errorMsg = setParams(process, iParams, fmap);
|
String errorMsg = setParams(process, iParams, fmap);
|
||||||
if (errorMsg != null)
|
if (errorMsg != null) {
|
||||||
|
boolean ok = Util.evaluateError(msgerror1,errorMsg, isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
// do nothing
|
||||||
|
} else {
|
||||||
exception(getCell(i, 1), new Exception(errorMsg));
|
exception(getCell(i, 1), new Exception(errorMsg));
|
||||||
|
}
|
||||||
|
}
|
||||||
if (recordID > 0)
|
if (recordID > 0)
|
||||||
pInstance.setRecord_ID( recordID);
|
pInstance.setRecord_ID( recordID);
|
||||||
pInstance.saveEx();
|
pInstance.saveEx();
|
||||||
|
@ -141,6 +159,7 @@ public class RunProcess extends TableFixture {
|
||||||
po.set_ValueOfColumn("DocAction", docAction);
|
po.set_ValueOfColumn("DocAction", docAction);
|
||||||
po.saveEx();
|
po.saveEx();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -166,13 +185,44 @@ public class RunProcess extends TableFixture {
|
||||||
{
|
{
|
||||||
getCell(i, 1).addToBody(Msg.parseTranslation(ctx, pi.getSummary()));
|
getCell(i, 1).addToBody(Msg.parseTranslation(ctx, pi.getSummary()));
|
||||||
addLogInfo(pInstance, i);
|
addLogInfo(pInstance, i);
|
||||||
|
|
||||||
|
if (wf.getWorkflowType().equals(MWorkflow.WORKFLOWTYPE_DocumentProcess)) {
|
||||||
|
MTable table = MTable.get(ctx, wf.getAD_Table_ID());
|
||||||
|
if (table != null) {
|
||||||
|
PO po = table.getPO(recordID, null);
|
||||||
|
if (!docAction.equals(po.get_Value("DocStatus"))) {
|
||||||
|
boolean ok = Util.evaluateError(Msg.parseTranslation(ctx, pi.getSummary()), msgerror1, isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
right(getCell(i, 1));
|
right(getCell(i, 1));
|
||||||
|
} else {
|
||||||
|
wrong(getCell(i, 1));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isErrorExpected) {
|
||||||
|
wrong(getCell(i, 1));
|
||||||
|
} else {
|
||||||
|
right(getCell(i, 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isErrorExpected) {
|
||||||
|
wrong(getCell(i, 1));
|
||||||
|
} else {
|
||||||
|
right(getCell(i, 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(Exception ex)
|
catch(Exception ex)
|
||||||
{
|
{
|
||||||
|
boolean ok = Util.evaluateError(ex.getMessage(), cell_value, isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(getCell(i, 1));
|
||||||
|
} else {
|
||||||
exception(getCell(i, 1), ex);
|
exception(getCell(i, 1), ex);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
//started = wfProcess != null;
|
//started = wfProcess != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,16 +242,26 @@ public class RunProcess extends TableFixture {
|
||||||
}
|
}
|
||||||
if (!processOK || pi.isError())
|
if (!processOK || pi.isError())
|
||||||
{
|
{
|
||||||
|
boolean ok = Util.evaluateError(msgerror1,pi.getSummary(), isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(getCell(i, 1));
|
||||||
|
processOK = true;
|
||||||
|
} else {
|
||||||
exception(getCell(i, 1), new Exception(pi.getSummary()));
|
exception(getCell(i, 1), new Exception(pi.getSummary()));
|
||||||
processOK = false;
|
processOK = false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (isErrorExpected) {
|
||||||
|
wrong(getCell(i, 1));
|
||||||
|
} else {
|
||||||
getCell(i, 1).addToBody(Msg.parseTranslation(ctx, pi.getSummary()));
|
getCell(i, 1).addToBody(Msg.parseTranslation(ctx, pi.getSummary()));
|
||||||
addLogInfo(pInstance, i);
|
addLogInfo(pInstance, i);
|
||||||
right(getCell(i, 1));
|
right(getCell(i, 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Report
|
// Report
|
||||||
if (/*processOK &&*/ (process.isReport() || jasperreport))//&& !m_jasperreport)
|
if (/*processOK &&*/ (process.isReport() || jasperreport))//&& !m_jasperreport)
|
||||||
|
|
|
@ -0,0 +1,194 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* This file is part of iDempiere ERP Bazaar *
|
||||||
|
* http://www.idempiere.org *
|
||||||
|
* *
|
||||||
|
* Copyright (C) Contributors *
|
||||||
|
* *
|
||||||
|
* 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 2 *
|
||||||
|
* 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, write to the Free Software *
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
|
||||||
|
* MA 02110-1301, USA. *
|
||||||
|
* *
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
package org.idempiere.fitnesse.fixture;
|
||||||
|
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.compiere.model.MTable;
|
||||||
|
import org.compiere.model.PO;
|
||||||
|
import org.compiere.util.DB;
|
||||||
|
|
||||||
|
import fitnesse.fixtures.TableFixture;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* iDempiere Update Record fixture for use with fitnesse framework testing
|
||||||
|
* @author juliana
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class UpdateRecord extends TableFixture {
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see fitnesse.fixtures.TableFixture#doStaticTable(int)
|
||||||
|
*/
|
||||||
|
|
||||||
|
private volatile static Instance adempiereInstance = null;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doStaticTable(int rows) {
|
||||||
|
|
||||||
|
if (adempiereInstance == null) {
|
||||||
|
adempiereInstance = Static_iDempiereInstance.getInstance();
|
||||||
|
}
|
||||||
|
if (adempiereInstance.getAdempiereService() == null
|
||||||
|
|| !adempiereInstance.getAdempiereService().isLoggedIn()) {
|
||||||
|
wrong(rows - 1, 1);
|
||||||
|
getCell(rows - 1, 1).addToBody("not logged in");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Properties ctx = adempiereInstance.getAdempiereService().getCtx();
|
||||||
|
int windowNo = adempiereInstance.getAdempiereService().getWindowNo();
|
||||||
|
|
||||||
|
PO gpo = null;
|
||||||
|
String tableName = new String("");
|
||||||
|
boolean tableOK = false;
|
||||||
|
MTable table = null;
|
||||||
|
|
||||||
|
boolean alreadyread = false;
|
||||||
|
StringBuilder whereclause = new StringBuilder("");
|
||||||
|
boolean isErrorExpected = false;
|
||||||
|
String msgerror = null;
|
||||||
|
for (int i = 0; i < rows; i++) {
|
||||||
|
String cell_title = getText(i, 0);
|
||||||
|
String cell_value = getText(i, 1);
|
||||||
|
if (cell_title.equalsIgnoreCase("*Table*")) {
|
||||||
|
if (i > 0) {
|
||||||
|
exception(getCell(i, 1), new Exception("*Table* must be defined in first row"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
tableName = cell_value;
|
||||||
|
table = MTable.get(ctx, tableName);
|
||||||
|
if (table == null || table.get_ID() <= 0) {
|
||||||
|
wrong(i, 1);
|
||||||
|
tableOK = false;
|
||||||
|
} else {
|
||||||
|
tableOK = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (cell_title.equalsIgnoreCase("*Where*")) {
|
||||||
|
if (i != 1) {
|
||||||
|
exception(getCell(i, 1), new Exception("*Where* must be defined in second row"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
whereclause.append(cell_value);
|
||||||
|
} else if (cell_title.equalsIgnoreCase("*Update*") || cell_title.equalsIgnoreCase("*Update*Error*")) {
|
||||||
|
isErrorExpected = "*Update*Error*".equalsIgnoreCase(cell_title);
|
||||||
|
msgerror = cell_value;
|
||||||
|
if (!tableOK) {
|
||||||
|
getCell(i, 1).addToBody("Table " + tableName + " does not exist");
|
||||||
|
wrong(i, 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (whereclause.length() == 0) {
|
||||||
|
getCell(i, 1).addToBody("No where clause");
|
||||||
|
wrong(i, 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String sql = "SELECT * FROM " + tableName + " WHERE "+ whereclause;
|
||||||
|
PreparedStatement pstmt = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
try {
|
||||||
|
pstmt = DB.prepareStatement(sql, null);
|
||||||
|
rs = pstmt.executeQuery();
|
||||||
|
if (rs.next()) {
|
||||||
|
gpo = table.getPO(rs, null);
|
||||||
|
} else {
|
||||||
|
getCell(i, 1).addToBody("No record found: " + sql);
|
||||||
|
boolean ok = Util.evaluateError("No record found: ",cell_value, isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(i, 1);
|
||||||
|
} else {
|
||||||
|
wrong(i, 1);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (rs.next()) {
|
||||||
|
getCell(i, 1).addToBody("More than one record found: " + sql);
|
||||||
|
boolean ok = Util.evaluateError("More than one record found: ", cell_value,isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(i, 1);
|
||||||
|
} else {
|
||||||
|
wrong(i, 1);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
boolean ok = Util.evaluateError(e.getMessage(),cell_value, isErrorExpected);
|
||||||
|
if (ok) {
|
||||||
|
right(getCell(i, 1));
|
||||||
|
} else {
|
||||||
|
exception(getCell(i, 1), e);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
} finally {
|
||||||
|
DB.close(rs, pstmt);
|
||||||
|
rs = null;
|
||||||
|
pstmt = null;
|
||||||
|
}
|
||||||
|
right(i, 1);
|
||||||
|
if (gpo != null) {
|
||||||
|
getCell(i, 1).addToBody(gpo.toString());
|
||||||
|
}
|
||||||
|
alreadyread = true;
|
||||||
|
} else {
|
||||||
|
// columns
|
||||||
|
if (tableOK) {
|
||||||
|
String value_evaluated = Util.evaluate(ctx, windowNo,cell_value, getCell(i, 1));
|
||||||
|
if (!alreadyread) {
|
||||||
|
// not read yet - add value to where clause
|
||||||
|
if (whereclause.length() > 0)
|
||||||
|
whereclause.append(" AND ");
|
||||||
|
whereclause.append(cell_title).append("=").append(value_evaluated);
|
||||||
|
} else {
|
||||||
|
if (gpo != null) {
|
||||||
|
if (gpo.set_ValueOfColumnReturningBoolean(cell_title, cell_value)) {
|
||||||
|
if (isErrorExpected) {
|
||||||
|
wrong(getCell(i, 1));
|
||||||
|
} else {
|
||||||
|
right(getCell(i, 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
gpo.saveEx();
|
||||||
|
} catch (Exception e) {
|
||||||
|
boolean ok = Util.evaluateError(e.getMessage(),msgerror, isErrorExpected);
|
||||||
|
if (ok)
|
||||||
|
right(getCell(i, 1));
|
||||||
|
else
|
||||||
|
exception(getCell(i, 1),e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}//end while
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -250,4 +250,30 @@ public class Util {
|
||||||
|
|
||||||
return evaluate(ctx, windowNo, expr, null);
|
return evaluate(ctx, windowNo, expr, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean evaluateError(String error, String cell, boolean isExpectedError) {
|
||||||
|
boolean evaluate = false;
|
||||||
|
|
||||||
|
if (error == null)
|
||||||
|
error = "";
|
||||||
|
if (cell == null)
|
||||||
|
cell = "";
|
||||||
|
|
||||||
|
if (isExpectedError) {
|
||||||
|
if (cell.length() > 0) {
|
||||||
|
if (error.contains(cell)) {
|
||||||
|
evaluate = true;
|
||||||
|
} else {
|
||||||
|
evaluate = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
evaluate = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
evaluate = false;
|
||||||
|
}
|
||||||
|
return evaluate;
|
||||||
|
}
|
||||||
|
|
||||||
} // AdempiereUtil
|
} // AdempiereUtil
|
||||||
|
|
|
@ -205,8 +205,7 @@ public class FitRecorder implements ModelValidator {
|
||||||
|| colName.equals("AD_Client_ID")
|
|| colName.equals("AD_Client_ID")
|
||||||
|| colName.equals(table.getTableName() + "_ID")
|
|| colName.equals(table.getTableName() + "_ID")
|
||||||
|| colName.equals(PO.getUUIDColumnName(table.getTableName()))
|
|| colName.equals(PO.getUUIDColumnName(table.getTableName()))
|
||||||
|| column.getAD_Reference_ID() == DisplayType.Button
|
|| column.getAD_Reference_ID() == DisplayType.Button)
|
||||||
)
|
|
||||||
continue;
|
continue;
|
||||||
if (po.isActive() && colName.equals("IsActive"))
|
if (po.isActive() && colName.equals("IsActive"))
|
||||||
continue;
|
continue;
|
||||||
|
@ -229,9 +228,10 @@ public class FitRecorder implements ModelValidator {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (po instanceof MPInstance) {
|
if(type == TYPE_AFTER_CHANGE)
|
||||||
if (type == TYPE_AFTER_CHANGE) {
|
{
|
||||||
|
if (po instanceof MPInstance)
|
||||||
|
{
|
||||||
MProcess pro = MProcess.get(Env.getCtx(), po.get_ValueAsInt("AD_Process_ID"));
|
MProcess pro = MProcess.get(Env.getCtx(), po.get_ValueAsInt("AD_Process_ID"));
|
||||||
MPInstance pint = (MPInstance)po;
|
MPInstance pint = (MPInstance)po;
|
||||||
writeFile("\n");
|
writeFile("\n");
|
||||||
|
@ -294,18 +294,157 @@ public class FitRecorder implements ModelValidator {
|
||||||
writeFile("|*Run*|");
|
writeFile("|*Run*|");
|
||||||
writeFile("\n");
|
writeFile("\n");
|
||||||
|
|
||||||
}
|
} else if (po instanceof MSession) {
|
||||||
}
|
|
||||||
|
|
||||||
if (po instanceof MSession) {
|
|
||||||
if (type == TYPE_AFTER_CHANGE) {
|
|
||||||
MSession session = (MSession) po;
|
MSession session = (MSession) po;
|
||||||
if (session.isProcessed()) {
|
if (session.isProcessed()) {
|
||||||
closefile();
|
closefile();
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if (dontLogTables.contains(po.get_TableName().toUpperCase()))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
// Ignore records created within a process
|
||||||
|
if (po.get_TrxName().startsWith("SvrProcess_"))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
// Ignore records created within a workflow process
|
||||||
|
if (po.get_TrxName().startsWith("WFP_"))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
MTable table = MTable.get(Env.getCtx(), po.get_Table_ID());
|
||||||
|
|
||||||
|
MColumn[] columns = table.getColumns(true);
|
||||||
|
StringBuilder where = new StringBuilder();
|
||||||
|
StringBuilder set = new StringBuilder();
|
||||||
|
boolean key=false;
|
||||||
|
for (int i = 0; i < columns.length; i++)
|
||||||
|
{
|
||||||
|
MColumn column = columns[i];
|
||||||
|
String colName = column.getColumnName();
|
||||||
|
String value=null;
|
||||||
|
if (DisplayType.isLookup(column.getAD_Reference_ID()) && DisplayType.List != column.getAD_Reference_ID()) {
|
||||||
|
value = resolveValue(po, table, column);
|
||||||
|
}else{
|
||||||
|
value=po.get_ValueAsString(colName);
|
||||||
|
}
|
||||||
|
if (column.isAllowLogging())
|
||||||
|
{
|
||||||
|
if (column.isKey())
|
||||||
|
{
|
||||||
|
if (!key) {
|
||||||
|
where.append("| *Where* | ");
|
||||||
|
where.append(colName + " = " + value+ " | ");
|
||||||
|
key=true;
|
||||||
|
} else {
|
||||||
|
where.append(" | " + colName + " | ");
|
||||||
|
where.append(value + " | ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (po.is_ValueChanged(colName)) {
|
||||||
|
if (colName.equals("Created")
|
||||||
|
|| colName.equals("CreatedBy")
|
||||||
|
|| colName.equals("Updated")
|
||||||
|
|| colName.equals("UpdatedBy")
|
||||||
|
|| colName.equals("AD_Client_ID")
|
||||||
|
|| colName.equals(table.getTableName()+ "_ID")
|
||||||
|
|| colName.equals(PO.getUUIDColumnName(table.getTableName()))
|
||||||
|
|| column.getAD_Reference_ID() == DisplayType.Button)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (po.isActive() && colName.equals("IsActive"))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (value != null && value.length() > 0) {
|
||||||
|
set.append("\n");
|
||||||
|
set.append("| " + colName + " | ");
|
||||||
|
set.append(value + "|");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}// end while columns
|
||||||
|
|
||||||
|
if (where.length() > 0 && set.length() > 0) {
|
||||||
|
writeFile("\n");
|
||||||
|
writeFile("\n");
|
||||||
|
writeFile("UPDATE RECORD");
|
||||||
|
writeFile("\n");
|
||||||
|
writeFile("!");
|
||||||
|
writeFile("| Update Record |");
|
||||||
|
writeFile("\n");
|
||||||
|
writeFile("| *Table* | ");
|
||||||
|
writeFile(po.get_TableName() + " |");
|
||||||
|
writeFile("\n");
|
||||||
|
writeFile(where.toString());
|
||||||
|
writeFile("\n");
|
||||||
|
writeFile("| *Update* |");
|
||||||
|
writeFile(set.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == TYPE_AFTER_DELETE)
|
||||||
|
{
|
||||||
|
if (dontLogTables.contains(po.get_TableName().toUpperCase()))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
// Ignore records created within a process
|
||||||
|
if (po.get_TrxName().startsWith("SvrProcess_"))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
// Ignore records created within a workflow process
|
||||||
|
if (po.get_TrxName().startsWith("WFP_"))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
writeFile("\n");
|
||||||
|
writeFile("\n");
|
||||||
|
writeFile("DELETE RECORD");
|
||||||
|
writeFile("\n");
|
||||||
|
writeFile("!");
|
||||||
|
writeFile("| Delete Record |");
|
||||||
|
writeFile("\n");
|
||||||
|
writeFile("| *Table* | ");
|
||||||
|
writeFile(po.get_TableName() + " |");
|
||||||
|
writeFile("\n");
|
||||||
|
|
||||||
|
MTable table = MTable.get(Env.getCtx(), po.get_Table_ID());
|
||||||
|
MColumn[] columns = table.getColumns(true);
|
||||||
|
boolean key=false;
|
||||||
|
|
||||||
|
for (int i = 0; i < columns.length; i++)
|
||||||
|
{
|
||||||
|
MColumn column = columns[i];
|
||||||
|
String colName = column.getColumnName();
|
||||||
|
String value=null;
|
||||||
|
if (DisplayType.isLookup(column.getAD_Reference_ID()) && DisplayType.List != column.getAD_Reference_ID()) {
|
||||||
|
value = resolveValue(po, table, column);
|
||||||
|
} else {
|
||||||
|
value=po.get_ValueAsString(colName);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (column.isAllowLogging()) {
|
||||||
|
if (column.isKey()) {
|
||||||
|
if (!key) {
|
||||||
|
writeFile("| *Where* | ");
|
||||||
|
writeFile(colName + " = " + value+ " | ");
|
||||||
|
key=true;
|
||||||
|
} else {
|
||||||
|
writeFile(" | " + colName + " | ");
|
||||||
|
writeFile(value + " | ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}//while columns
|
||||||
|
|
||||||
|
writeFile("\n");
|
||||||
|
writeFile("| *Delete* |");
|
||||||
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
if (log.isLoggable(Level.INFO)) log.info(e.getLocalizedMessage());
|
||||||
return e.getLocalizedMessage();
|
return e.getLocalizedMessage();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@ -498,8 +637,7 @@ public class FitRecorder implements ModelValidator {
|
||||||
writeFile("|Login|");
|
writeFile("|Login|");
|
||||||
writeFile("\n");
|
writeFile("\n");
|
||||||
writeFile("|User|");
|
writeFile("|User|");
|
||||||
if (MSysConfig.getBooleanValue(MSysConfig.USE_EMAIL_FOR_LOGIN,
|
if (MSysConfig.getBooleanValue(MSysConfig.USE_EMAIL_FOR_LOGIN,false))
|
||||||
false))
|
|
||||||
writeFile(user.getEMail() + "|");
|
writeFile(user.getEMail() + "|");
|
||||||
else if (user.getLDAPUser() != null)
|
else if (user.getLDAPUser() != null)
|
||||||
writeFile(user.getLDAPUser() + "|");
|
writeFile(user.getLDAPUser() + "|");
|
||||||
|
|
Loading…
Reference in New Issue