Refactor custom form - ID: 2787613

This commit is contained in:
Heng Sin Low 2009-07-08 10:26:26 +00:00
parent a5bb19faa6
commit b2e69c349f
4 changed files with 290 additions and 422 deletions

View File

@ -0,0 +1,211 @@
/******************************************************************************
* Copyright (C) 2009 Low Heng Sin *
* Copyright (C) 2009 Idalica Corporation *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. 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., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
*****************************************************************************/
package org.compiere.apps.form;
import java.sql.Timestamp;
import org.compiere.model.MArchive;
import org.compiere.model.MBPartner;
import org.compiere.model.MRole;
import org.compiere.util.CLogger;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.TimeUtil;
public class Archive {
/** Window No */
public int m_WindowNo = 0;
/** The Archives */
public MArchive[] m_archives = new MArchive[0];
/** Archive Index */
public int m_index = 0;
/** Table direct */
public int m_AD_Table_ID = 0;
/** Record direct */
public int m_Record_ID = 0;
/** Logger */
public static CLogger log = CLogger.getCLogger(Archive.class);
public KeyNamePair[] getProcessData()
{
// Processes
int AD_Role_ID = Env.getAD_Role_ID(Env.getCtx());
boolean trl = !Env.isBaseLanguage(Env.getCtx(), "AD_Process");
String lang = Env.getAD_Language(Env.getCtx());
// TODO: ASP - implement process and window access ASP control
String sql = "SELECT DISTINCT p.AD_Process_ID,"
+ (trl ? "trl.Name" : "p.Name ")
+ " FROM AD_Process p INNER JOIN AD_Process_Access pa ON (p.AD_Process_ID=pa.AD_Process_ID) "
+ (trl ? "LEFT JOIN AD_Process_Trl trl on (trl.AD_Process_ID=p.AD_Process_ID and trl.AD_Language=" + DB.TO_STRING(lang) + ")" : "")
+ " WHERE pa.AD_Role_ID=" + AD_Role_ID
+ " AND p.IsReport='Y' AND p.IsActive='Y' AND pa.IsActive='Y' "
+ "ORDER BY 2";
return DB.getKeyNamePairs(sql, true);
}
public KeyNamePair[] getTableData()
{
// Tables
int AD_Role_ID = Env.getAD_Role_ID(Env.getCtx());
boolean trl = !Env.isBaseLanguage(Env.getCtx(), "AD_Table");
String lang = Env.getAD_Language(Env.getCtx());
String sql = "SELECT DISTINCT t.AD_Table_ID,"
+ (trl ? "trl.Name" : "t.Name")
+ " FROM AD_Table t INNER JOIN AD_Tab tab ON (tab.AD_Table_ID=t.AD_Table_ID)"
+ " INNER JOIN AD_Window_Access wa ON (tab.AD_Window_ID=wa.AD_Window_ID) "
+ (trl ? "LEFT JOIN AD_Table_Trl trl on (trl.AD_Table_ID=t.AD_Table_ID and trl.AD_Language=" + DB.TO_STRING(lang) + ")" : "")
+ " WHERE wa.AD_Role_ID=" + AD_Role_ID
+ " AND t.IsActive='Y' AND tab.IsActive='Y' "
+ "ORDER BY 2";
return DB.getKeyNamePairs(sql, true);
}
public KeyNamePair[] getUserData()
{
// Internal Users
String sql = "SELECT AD_User_ID, Name "
+ "FROM AD_User u WHERE EXISTS "
+"(SELECT * FROM AD_User_Roles ur WHERE u.AD_User_ID=ur.AD_User_ID) "
+ "ORDER BY 2";
return DB.getKeyNamePairs(sql, true);
} // dynInit
/**
* Is it the same
* @param s1 s1
* @param s2 s1
* @return true if the same
*/
public boolean isSame(String s1, String s2)
{
if (s1 == null)
return s2 == null;
else if (s2 == null)
return false;
else
return s1.equals(s2);
} // isSame
/**************************************************************************
* Create Query
*/
public void cmd_query(boolean reports, KeyNamePair process, KeyNamePair table, Integer C_BPartner_ID,
String name, String description, String help, KeyNamePair createdBy,
Timestamp createdFrom, Timestamp createdTo)
{
StringBuffer sql = new StringBuffer();
MRole role = MRole.getDefault();
if (!role.isCanReport())
{
log.warning("User/Role cannot Report AD_User_ID=" + Env.getAD_User_ID(Env.getCtx()));
return;
}
sql.append(" AND IsReport=").append(reports ? "'Y'" : "'N'");
// Process
if (reports)
{
if (process != null && process.getKey() > 0)
sql.append(" AND AD_Process_ID=").append(process.getKey());
}
// Table
if (m_AD_Table_ID > 0)
{
sql.append(" AND ((AD_Table_ID=").append(m_AD_Table_ID);
if (m_Record_ID > 0)
sql.append(" AND Record_ID=").append(m_Record_ID);
sql.append(")");
if (m_AD_Table_ID == MBPartner.Table_ID && m_Record_ID > 0)
sql.append(" OR C_BPartner_ID=").append(m_Record_ID);
sql.append(")");
// Reset for query
m_AD_Table_ID = 0;
m_Record_ID = 0;
}
else
{
if (table != null && table.getKey() > 0)
sql.append(" AND AD_Table_ID=").append(table.getKey());
}
// Business Partner
if (!reports)
{
if (C_BPartner_ID != null)
sql.append(" AND C_BPartner_ID=").append(C_BPartner_ID);
else
sql.append(" AND C_BPartner_ID IS NOT NULL");
}
// Name
if (name != null && name.length() > 0)
{
if (name.indexOf('%') != -1 || name.indexOf('_') != -1)
sql.append(" AND Name LIKE ").append(DB.TO_STRING(name));
else
sql.append(" AND Name=").append(DB.TO_STRING(name));
}
// Description
if (description != null && description.length() > 0)
{
if (description.indexOf('%') != -1 || description.indexOf('_') != -1)
sql.append(" AND Description LIKE ").append(DB.TO_STRING(description));
else
sql.append(" AND Description=").append(DB.TO_STRING(description));
}
// Help
if (help != null && help.length() > 0)
{
if (help.indexOf('%') != -1 || help.indexOf('_') != -1)
sql.append(" AND Help LIKE ").append(DB.TO_STRING(help));
else
sql.append(" AND Help=").append(DB.TO_STRING(help));
}
// CreatedBy
if (createdBy != null && createdBy.getKey() > 0)
sql.append(" AND CreatedBy=").append(createdBy.getKey());
// Created
if (createdFrom != null)
sql.append(" AND Created>=").append(DB.TO_DATE(createdFrom, true));
if (createdTo != null)
sql.append(" AND Created<").append(DB.TO_DATE(TimeUtil.addDays(createdTo,1), true));
log.fine(sql.toString());
// Process Access
sql.append(" AND (AD_Process_ID IS NULL OR AD_Process_ID IN "
+ "(SELECT AD_Process_ID FROM AD_Process_Access WHERE AD_Role_ID=")
.append(role.getAD_Role_ID()).append("))");
// Table Access
sql.append(" AND (AD_Table_ID IS NULL "
+ "OR (AD_Table_ID IS NOT NULL AND AD_Process_ID IS NOT NULL) " // Menu Reports
+ "OR AD_Table_ID IN "
+ "(SELECT t.AD_Table_ID FROM AD_Tab t"
+ " INNER JOIN AD_Window_Access wa ON (t.AD_Window_ID=wa.AD_Window_ID) "
+ "WHERE wa.AD_Role_ID=").append(role.getAD_Role_ID()).append("))");
log.finest(sql.toString());
//
m_archives = MArchive.get(Env.getCtx(), sql.toString());
log.info("Length=" + m_archives.length);
} // cmd_query
}

View File

@ -40,8 +40,6 @@ import org.compiere.grid.ed.VLookup;
import org.compiere.grid.ed.VString;
import org.compiere.grid.ed.VText;
import org.compiere.model.MArchive;
import org.compiere.model.MBPartner;
import org.compiere.model.MRole;
import org.compiere.swing.CButton;
import org.compiere.swing.CCheckBox;
import org.compiere.swing.CComboBox;
@ -49,12 +47,9 @@ import org.compiere.swing.CLabel;
import org.compiere.swing.CPanel;
import org.compiere.swing.CTabbedPane;
import org.compiere.swing.CTextField;
import org.compiere.util.CLogger;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg;
import org.compiere.util.TimeUtil;
/**
@ -68,7 +63,7 @@ import org.compiere.util.TimeUtil;
* @author Jorg Janke
* @version $Id: ArchiveViewer.java,v 1.2 2006/07/30 00:51:28 jjanke Exp $
*/
public class ArchiveViewer extends CTabbedPane
public class ArchiveViewer extends Archive
implements FormPanel, ActionListener, VetoableChangeListener
{
@ -76,6 +71,8 @@ public class ArchiveViewer extends CTabbedPane
*
*/
private static final long serialVersionUID = 876677286190292132L;
private CTabbedPane panel = new CTabbedPane();
/**
@ -92,7 +89,7 @@ public class ArchiveViewer extends CTabbedPane
{
dynInit();
jbInit();
frame.getContentPane().add(this, BorderLayout.CENTER);
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.getContentPane().add(confirmPanel, BorderLayout.SOUTH);
//
m_frame.setIconImage(Env.getImage("Archive16.gif"));
@ -103,24 +100,9 @@ public class ArchiveViewer extends CTabbedPane
}
} // init
/** Window No */
private int m_WindowNo = 0;
/** FormFrame */
private FormFrame m_frame;
/** The Archives */
private MArchive[] m_archives = new MArchive[0];
/** Archive Index */
private int m_index = 0;
/** Table direct */
private int m_AD_Table_ID = 0;
/** Record direct */
private int m_Record_ID = 0;
/** Logger */
private static CLogger log = CLogger.getCLogger(ArchiveViewer.class);
private CPanel queryPanel = new CPanel(new GridBagLayout());
private CCheckBox reportField = new CCheckBox(Msg.translate(Env.getCtx(), "IsReport"));
private CLabel processLabel = new CLabel(Msg.translate(Env.getCtx(), "AD_Process_ID"));
@ -168,36 +150,9 @@ public class ArchiveViewer extends CTabbedPane
*/
private void dynInit()
{
int AD_Role_ID = Env.getAD_Role_ID(Env.getCtx());
// Processes
boolean trl = !Env.isBaseLanguage(Env.getCtx(), "AD_Process");
String lang = Env.getAD_Language(Env.getCtx());
// TODO: ASP - implement process and window access ASP control
String sql = "SELECT DISTINCT p.AD_Process_ID,"
+ (trl ? "trl.Name" : "p.Name ")
+ " FROM AD_Process p INNER JOIN AD_Process_Access pa ON (p.AD_Process_ID=pa.AD_Process_ID) "
+ (trl ? "LEFT JOIN AD_Process_Trl trl on (trl.AD_Process_ID=p.AD_Process_ID and trl.AD_Language=" + DB.TO_STRING(lang) + ")" : "")
+ " WHERE pa.AD_Role_ID=" + AD_Role_ID
+ " AND p.IsReport='Y' AND p.IsActive='Y' AND pa.IsActive='Y' "
+ "ORDER BY 2";
processField = new CComboBox(DB.getKeyNamePairs(sql, true));
// Tables
trl = !Env.isBaseLanguage(Env.getCtx(), "AD_Table");
sql = "SELECT DISTINCT t.AD_Table_ID,"
+ (trl ? "trl.Name" : "t.Name")
+ " FROM AD_Table t INNER JOIN AD_Tab tab ON (tab.AD_Table_ID=t.AD_Table_ID)"
+ " INNER JOIN AD_Window_Access wa ON (tab.AD_Window_ID=wa.AD_Window_ID) "
+ (trl ? "LEFT JOIN AD_Table_Trl trl on (trl.AD_Table_ID=t.AD_Table_ID and trl.AD_Language=" + DB.TO_STRING(lang) + ")" : "")
+ " WHERE wa.AD_Role_ID=" + AD_Role_ID
+ " AND t.IsActive='Y' AND tab.IsActive='Y' "
+ "ORDER BY 2";
tableField = new CComboBox(DB.getKeyNamePairs(sql, true));
// Internal Users
sql = "SELECT AD_User_ID, Name "
+ "FROM AD_User u WHERE EXISTS "
+"(SELECT * FROM AD_User_Roles ur WHERE u.AD_User_ID=ur.AD_User_ID) "
+ "ORDER BY 2";
createdByQField = new CComboBox(DB.getKeyNamePairs(sql, true));
processField = new CComboBox(getProcessData());
tableField = new CComboBox(getTableData());
createdByQField = new CComboBox(getUserData());
//
bPartnerField = VLookup.createBPartner(m_WindowNo);
} // dynInit
@ -249,7 +204,7 @@ public class ArchiveViewer extends CTabbedPane
1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,0,0,0), 0, 0));
queryPanel.add(createdQTo, new GridBagConstraints(2, line,
1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,0,0,0), 0, 0));
this.add(queryPanel, "Query");
panel.add(queryPanel, "Query");
//
//
line = 0;
@ -301,12 +256,12 @@ public class ArchiveViewer extends CTabbedPane
viewEnterPanel.setPreferredSize(new Dimension(220,500));
updateArchive.addActionListener(this);
viewPanelSplit.setRightComponent(viewEnterPanel);
this.add(viewPanel, "View");
panel.add(viewPanel, "View");
//
confirmPanel.addActionListener(this);
updateQDisplay();
//
this.setPreferredSize(new Dimension (720,500));
panel.setPreferredSize(new Dimension (720,500));
} // jbInit
/**
@ -333,7 +288,7 @@ public class ArchiveViewer extends CTabbedPane
dispose();
else if (e.getActionCommand().equals(ConfirmPanel.A_OK))
{
if (getSelectedIndex() == 1)
if (panel.getSelectedIndex() == 1)
dispose();
else
cmd_query();
@ -463,22 +418,6 @@ public class ArchiveViewer extends CTabbedPane
updateVDisplay(false);
} // cmd_updateArchive
/**
* Is it the same
* @param s1 s1
* @param s2 s1
* @return true if the same
*/
private boolean isSame (String s1, String s2)
{
if (s1 == null)
return s2 == null;
else if (s2 == null)
return false;
else
return s1.equals(s2);
} // isSame
/**
* Query Directly
* @param isReport report
@ -500,117 +439,22 @@ public class ArchiveViewer extends CTabbedPane
*/
private void cmd_query()
{
StringBuffer sql = new StringBuffer();
boolean reports = reportField.isSelected();
MRole role = MRole.getDefault();
if (!role.isCanReport())
{
log.warning("User/Role cannot Report AD_User_ID=" + Env.getAD_User_ID(Env.getCtx()));
return;
}
sql.append(" AND IsReport=").append(reports ? "'Y'" : "'N'");
KeyNamePair process = (KeyNamePair)processField.getSelectedItem();
KeyNamePair table = (KeyNamePair)tableField.getSelectedItem();
Integer C_BPartner_ID = (Integer)bPartnerField.getValue();
String name = nameQField.getText();
String description = descriptionQField.getText();
String help = helpQField.getText();
KeyNamePair createdBy = (KeyNamePair)createdByQField.getSelectedItem();
Timestamp createdFrom = createdQFrom.getTimestamp();
Timestamp createdTo = createdQTo.getTimestamp();
// Process
if (reports)
{
KeyNamePair nn = (KeyNamePair)processField.getSelectedItem();
if (nn != null && nn.getKey() > 0)
sql.append(" AND AD_Process_ID=").append(nn.getKey());
}
cmd_query(reports, process, table, C_BPartner_ID, name, description, help,
createdBy, createdFrom, createdTo);
// Table
if (m_AD_Table_ID > 0)
{
sql.append(" AND ((AD_Table_ID=").append(m_AD_Table_ID);
if (m_Record_ID > 0)
sql.append(" AND Record_ID=").append(m_Record_ID);
sql.append(")");
if (m_AD_Table_ID == MBPartner.Table_ID && m_Record_ID > 0)
sql.append(" OR C_BPartner_ID=").append(m_Record_ID);
sql.append(")");
// Reset for query
m_AD_Table_ID = 0;
m_Record_ID = 0;
}
else
{
KeyNamePair nn = (KeyNamePair)tableField.getSelectedItem();
if (nn != null && nn.getKey() > 0)
sql.append(" AND AD_Table_ID=").append(nn.getKey());
}
// Business Partner
if (!reports)
{
Integer ii = (Integer)bPartnerField.getValue();
if (ii != null)
sql.append(" AND C_BPartner_ID=").append(ii);
else
sql.append(" AND C_BPartner_ID IS NOT NULL");
}
// Name
String ss = nameQField.getText();
if (ss != null && ss.length() > 0)
{
if (ss.indexOf('%') != -1 || ss.indexOf('_') != -1)
sql.append(" AND Name LIKE ").append(DB.TO_STRING(ss));
else
sql.append(" AND Name=").append(DB.TO_STRING(ss));
}
// Description
ss = descriptionQField.getText();
if (ss != null && ss.length() > 0)
{
if (ss.indexOf('%') != -1 || ss.indexOf('_') != -1)
sql.append(" AND Description LIKE ").append(DB.TO_STRING(ss));
else
sql.append(" AND Description=").append(DB.TO_STRING(ss));
}
// Help
ss = helpQField.getText();
if (ss != null && ss.length() > 0)
{
if (ss.indexOf('%') != -1 || ss.indexOf('_') != -1)
sql.append(" AND Help LIKE ").append(DB.TO_STRING(ss));
else
sql.append(" AND Help=").append(DB.TO_STRING(ss));
}
// CreatedBy
KeyNamePair nn = (KeyNamePair)createdByQField.getSelectedItem();
if (nn != null && nn.getKey() > 0)
sql.append(" AND CreatedBy=").append(nn.getKey());
// Created
Timestamp tt = createdQFrom.getTimestamp();
if (tt != null)
sql.append(" AND Created>=").append(DB.TO_DATE(tt, true));
tt = createdQTo.getTimestamp();
if (tt != null)
sql.append(" AND Created<").append(DB.TO_DATE(TimeUtil.addDays(tt,1), true));
log.fine(sql.toString());
// Process Access
sql.append(" AND (AD_Process_ID IS NULL OR AD_Process_ID IN "
+ "(SELECT AD_Process_ID FROM AD_Process_Access WHERE AD_Role_ID=")
.append(role.getAD_Role_ID()).append("))");
// Table Access
sql.append(" AND (AD_Table_ID IS NULL "
+ "OR (AD_Table_ID IS NOT NULL AND AD_Process_ID IS NOT NULL) " // Menu Reports
+ "OR AD_Table_ID IN "
+ "(SELECT t.AD_Table_ID FROM AD_Tab t"
+ " INNER JOIN AD_Window_Access wa ON (t.AD_Window_ID=wa.AD_Window_ID) "
+ "WHERE wa.AD_Role_ID=").append(role.getAD_Role_ID()).append("))");
log.finest(sql.toString());
//
m_archives = MArchive.get(Env.getCtx(), sql.toString());
log.info("Length=" + m_archives.length);
// Display
this.setSelectedIndex(1);
panel.setSelectedIndex(1);
m_index = 1;
updateVDisplay(false);
} // cmd_query

View File

@ -154,9 +154,9 @@ public class WArchive implements EventListener
if (e.getTarget() instanceof Menuitem)
{
int AD_Form_ID = 118; // ArchiveViewer
Window form = ADForm.openForm(AD_Form_ID);
ADForm form = ADForm.openForm(AD_Form_ID);
WArchiveViewer av = (WArchiveViewer) form;
WArchiveViewer av = (WArchiveViewer) form.getICustomForm();
if (e.getTarget() == m_documents)
av.query(false, m_AD_Table_ID, m_Record_ID);
else if (e.getTarget() == m_reports)

View File

@ -43,22 +43,18 @@ import org.adempiere.webui.component.Tabpanels;
import org.adempiere.webui.component.Tabs;
import org.adempiere.webui.component.Textbox;
import org.adempiere.webui.editor.WSearchEditor;
import org.adempiere.webui.event.ValueChangeEvent;
import org.adempiere.webui.event.ValueChangeListener;
import org.adempiere.webui.panel.ADForm;
import org.adempiere.webui.panel.CustomForm;
import org.adempiere.webui.panel.ICustomForm;
import org.adempiere.webui.session.SessionManager;
import org.compiere.apps.form.Archive;
import org.compiere.model.MArchive;
import org.compiere.model.MBPartner;
import org.compiere.model.MLookup;
import org.compiere.model.MLookupFactory;
import org.compiere.model.MRole;
import org.compiere.util.CLogger;
import org.compiere.util.DB;
import org.compiere.util.DisplayType;
import org.compiere.util.Env;
import org.compiere.util.KeyNamePair;
import org.compiere.util.Msg;
import org.compiere.util.TimeUtil;
import org.zkoss.util.media.AMedia;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
@ -74,28 +70,14 @@ import org.zkoss.zul.Iframe;
* @date September 28, 2007
*/
public class WArchiveViewer extends ADForm implements EventListener, ValueChangeListener
public class WArchiveViewer extends Archive implements ICustomForm, EventListener
{
/**
*
*/
private static final long serialVersionUID = 1861963456140146011L;
/** The Archives */
private MArchive[] m_archives = new MArchive[0];
/** Archive Index */
private int m_index = 0;
/** Table direct */
private int m_AD_Table_ID = 0;
/** Record direct */
private int m_Record_ID = 0;
/** Logger */
private static CLogger log = CLogger.getCLogger(WArchiveViewer.class);
private CustomForm form = new CustomForm();
// private Vbox queryPanel = new Vbox();
private Checkbox reportField = new Checkbox();
@ -142,15 +124,6 @@ public class WArchiveViewer extends ADForm implements EventListener, ValueChange
private Button bRefresh = new Button();
public WArchiveViewer()
{
}
/**
* Initialize Panel
* @param WindowNo window
*/
protected void initForm()
{
log.info("");
@ -171,70 +144,25 @@ public class WArchiveViewer extends ADForm implements EventListener, ValueChange
private void dynInit()
{
int AD_Role_ID = Env.getAD_Role_ID(Env.getCtx());
//Processes
boolean trl = !Env.isBaseLanguage(Env.getCtx(), "AD_Process");
String lang = Env.getAD_Language(Env.getCtx());
// TODO: ASP - implement process and window access ASP control
String sql = "SELECT DISTINCT p.AD_Process_ID,"
+ (trl ? "trl.Name" : "p.Name ")
+ " FROM AD_Process p INNER JOIN AD_Process_Access pa ON (p.AD_Process_ID=pa.AD_Process_ID) "
+ (trl ? "LEFT JOIN AD_Process_Trl trl on (trl.AD_Process_ID=p.AD_Process_ID and trl.AD_Language=" + DB.TO_STRING(lang) + ")" : "")
+ " WHERE pa.AD_Role_ID=" + AD_Role_ID
+ " AND p.IsReport='Y' AND p.IsActive='Y' AND pa.IsActive='Y' "
+ "ORDER BY 2";
processField = new Listbox();
KeyNamePair[] keyNamePair = DB.getKeyNamePairs(sql, true);
KeyNamePair[] keyNamePair = getProcessData();
for (int i = 0; i < keyNamePair.length; i++)
{
processField.appendItem(keyNamePair[i].getName(), keyNamePair[i]);
}
// Tables
trl = !Env.isBaseLanguage(Env.getCtx(), "AD_Table");
sql = "SELECT DISTINCT t.AD_Table_ID,"
+ (trl ? "trl.Name" : "t.Name")
+ " FROM AD_Table t INNER JOIN AD_Tab tab ON (tab.AD_Table_ID=t.AD_Table_ID)"
+ " INNER JOIN AD_Window_Access wa ON (tab.AD_Window_ID=wa.AD_Window_ID) "
+ (trl ? "LEFT JOIN AD_Table_Trl trl on (trl.AD_Table_ID=t.AD_Table_ID and trl.AD_Language=" + DB.TO_STRING(lang) + ")" : "")
+ " WHERE wa.AD_Role_ID=" + AD_Role_ID
+ " AND t.IsActive='Y' AND tab.IsActive='Y' "
+ "ORDER BY 2";
tableField = new Listbox();
keyNamePair = DB.getKeyNamePairs(sql, true);
tableField = new Listbox();
keyNamePair = getTableData();
for (int i = 0; i < keyNamePair.length; i++)
{
tableField.appendItem(keyNamePair[i].getName(), keyNamePair[i]);
}
// Internal Users
sql = "SELECT AD_User_ID, Name "
+ "FROM AD_User u WHERE EXISTS "
+"(SELECT * FROM AD_User_Roles ur WHERE u.AD_User_ID=ur.AD_User_ID) "
+ "ORDER BY 2";
createdByQField = new Listbox();
keyNamePair = DB.getKeyNamePairs(sql, true);
createdByQField = new Listbox();
keyNamePair = getUserData();
for (int i = 0; i < keyNamePair.length; i++)
{
createdByQField.appendItem(keyNamePair[i].getName(), keyNamePair[i]);
}
MLookup lookup = MLookupFactory.get(Env.getCtx(), m_WindowNo,
0, 2762, DisplayType.Search);
MLookup lookup = MLookupFactory.get(Env.getCtx(), m_WindowNo, 0, 2762, DisplayType.Search);
bPartnerField = new WSearchEditor(lookup, Msg.translate(
Env.getCtx(), "C_BPartner_ID"), "", true, false, true);
bPartnerField.addValueChangeListener(this);
} // dynInit
private void reportViewer(byte[] data)
@ -283,11 +211,11 @@ public class WArchiveViewer extends ADForm implements EventListener, ValueChange
bNext.addEventListener(Events.ON_CLICK, this);
nameField.addEventListener(Events.ON_CHANGE, this);
descriptionField.addEventListener(Events.ON_SELECT, this);
helpField.addEventListener(Events.ON_SELECT, this);
descriptionField.addEventListener(Events.ON_CHANGE, this);
helpField.addEventListener(Events.ON_CHANGE, this);
reportField.setLabel(Msg.translate(Env.getCtx(), "IsReport"));
reportField.addEventListener(Events.ON_CLICK, this);
reportField.addEventListener(Events.ON_CHECK, this);
Grid gridQuery = new Grid();
gridQuery.setWidth("500px");
@ -514,10 +442,10 @@ public class WArchiveViewer extends ADForm implements EventListener, ValueChange
iframe.setWidth("100%");
iframe.setAutohide(true);
this.setWidth("100%");
this.setHeight("100%");
this.appendChild(tabbox);
this.appendChild(confirmPanel);
form.setWidth("100%");
form.setHeight("100%");
form.appendChild(tabbox);
form.appendChild(confirmPanel);
}
public void onEvent(Event e) throws Exception
@ -548,14 +476,20 @@ public class WArchiveViewer extends ADForm implements EventListener, ValueChange
if(tabbox.getSelectedIndex() == 1)
iframe.invalidate();
}
if(e.getName().equals(Events.ON_CHANGE))
{
if (m_archives.length > 0)
updateArchive.setEnabled(true);
}
}
public void valueChange(ValueChangeEvent evt)
/* public void valueChange(ValueChangeEvent evt)
{
if (m_archives.length > 0)
updateArchive.setEnabled(true);
}
*/
/**
* Update Query Display
*/
@ -678,23 +612,6 @@ public class WArchiveViewer extends ADForm implements EventListener, ValueChange
updateVDisplay(false);
} // cmd_updateArchive
/**
* Is it the same
* @param s1 s1
* @param s2 s1
* @return true if the same
*/
private boolean isSame (String s1, String s2)
{
if (s1 == null)
return s2 == null;
else if (s2 == null)
return false;
else
return s1.equals(s2);
} // isSame
/**
* Query Directly
* @param isReport report
@ -717,158 +634,54 @@ public class WArchiveViewer extends ADForm implements EventListener, ValueChange
private void cmd_query()
{
StringBuffer sql = new StringBuffer();
boolean reports = reportField.isChecked();
MRole role = MRole.getDefault();
if (!role.isCanReport())
{
log.warning("User/Role cannot Report AD_User_ID=" + Env.getAD_User_ID(Env.getCtx()));
return;
}
sql.append(" AND IsReport=").append(reports ? "'Y'" : "'N'");
// Process
if (reports)
{
ListItem listitem = processField.getSelectedItem();
KeyNamePair nn = null;
if (listitem != null)
nn = (KeyNamePair)listitem.getValue();
if (nn != null && nn.getKey() > 0)
sql.append(" AND AD_Process_ID=").append(nn.getKey());
}
// Table
if (m_AD_Table_ID > 0)
{
sql.append(" AND ((AD_Table_ID=").append(m_AD_Table_ID);
if (m_Record_ID > 0)
sql.append(" AND Record_ID=").append(m_Record_ID);
sql.append(")");
if (m_AD_Table_ID == MBPartner.Table_ID && m_Record_ID > 0)
sql.append(" OR C_BPartner_ID=").append(m_Record_ID);
sql.append(")");
// Reset for query
m_AD_Table_ID = 0;
m_Record_ID = 0;
}
else
{
ListItem listitem = tableField.getSelectedItem();
KeyNamePair nn = null;
if (listitem != null)
nn = (KeyNamePair)listitem.getValue();
if (nn != null && nn.getKey() > 0)
sql.append(" AND AD_Table_ID=").append(nn.getKey());
}
// Business Partner
if (!reports)
{
Integer ii = (Integer)bPartnerField.getValue();
if (ii != null)
sql.append(" AND C_BPartner_ID=").append(ii);
else
sql.append(" AND C_BPartner_ID IS NOT NULL");
}
// Name
String ss = nameQField.getText();
if (ss != null && ss.length() > 0)
{
if (ss.indexOf('%') != -1 || ss.indexOf('_') != -1)
sql.append(" AND Name LIKE ").append(DB.TO_STRING(ss));
else
sql.append(" AND Name=").append(DB.TO_STRING(ss));
}
// Description
ss = descriptionQField.getText();
if (ss != null && ss.length() > 0)
{
if (ss.indexOf('%') != -1 || ss.indexOf('_') != -1)
sql.append(" AND Description LIKE ").append(DB.TO_STRING(ss));
else
sql.append(" AND Description=").append(DB.TO_STRING(ss));
}
// Help
ss = helpQField.getText();
if (ss != null && ss.length() > 0)
{
if (ss.indexOf('%') != -1 || ss.indexOf('_') != -1)
sql.append(" AND Help LIKE ").append(DB.TO_STRING(ss));
else
sql.append(" AND Help=").append(DB.TO_STRING(ss));
}
// CreatedBy
ListItem listitem = createdByQField.getSelectedItem();
KeyNamePair nn = null;
ListItem listitem = processField.getSelectedItem();
KeyNamePair process = null;
if (listitem != null)
nn = (KeyNamePair)listitem.getValue();
process = (KeyNamePair)listitem.getValue();
if (nn != null && nn.getKey() > 0)
sql.append(" AND CreatedBy=").append(nn.getKey());
listitem = tableField.getSelectedItem();
KeyNamePair table = null;
if (listitem != null)
table = (KeyNamePair)listitem.getValue();
Integer C_BPartner_ID = (Integer)bPartnerField.getValue();
String name = nameQField.getText();
String description = descriptionQField.getText();
String help = helpQField.getText();
listitem = createdByQField.getSelectedItem();
KeyNamePair createdBy = null;
if (listitem != null)
createdBy = (KeyNamePair)listitem.getValue();
// Created
Date date = null;
Timestamp tt =null;
Timestamp createdFrom = null;
if (createdQFrom.getValue() != null)
{
date = createdQFrom.getValue();
tt = new Timestamp(date.getTime());
createdFrom = new Timestamp(date.getTime());
}
if (tt != null)
sql.append(" AND Created>=").append(DB.TO_DATE(tt, true));
Timestamp createdTo = null;
if (createdQTo.getValue() != null)
{
date = createdQTo.getValue();
tt = new Timestamp(date.getTime());
createdTo = new Timestamp(date.getTime());
}
if (tt != null)
sql.append(" AND Created<").append(DB.TO_DATE(TimeUtil.addDays(tt,1), true));
log.fine(sql.toString());
// Process Access
sql.append(" AND (AD_Process_ID IS NULL OR AD_Process_ID IN "
+ "(SELECT AD_Process_ID FROM AD_Process_Access WHERE AD_Role_ID=")
.append(role.getAD_Role_ID()).append("))");
// Table Access
sql.append(" AND (AD_Table_ID IS NULL "
+ "OR (AD_Table_ID IS NOT NULL AND AD_Process_ID IS NOT NULL) " // Menu Reports
+ "OR AD_Table_ID IN "
+ "(SELECT t.AD_Table_ID FROM AD_Tab t"
+ " INNER JOIN AD_Window_Access wa ON (t.AD_Window_ID=wa.AD_Window_ID) "
+ "WHERE wa.AD_Role_ID=").append(role.getAD_Role_ID()).append("))");
log.finest(sql.toString());
m_archives = MArchive.get(Env.getCtx(), sql.toString());
log.info("Length=" + m_archives.length);
cmd_query(reports, process, table, C_BPartner_ID, name, description, help,
createdBy, createdFrom, createdTo);
// Display
tabbox.setSelectedIndex(1);
m_index = 1;
updateVDisplay(false);
} // cmd_query
} // cmd_query
public ADForm getForm() {
return form;
}
}