⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 find.java

📁 Java写的ERP系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		m_targetFields = null;
		//
		removeAll();
		super.dispose();
	}	//	dispose

	/*************************************************************************/

	/**
	 *	Action Listener
	 *  @param e ActionEvent
	 */
	public void actionPerformed (ActionEvent e)
	{
		Log.trace(Log.l1_User, "Find.actionPerformed", e.getActionCommand());
		//
		if (e.getActionCommand() == ConfirmPanel.A_CANCEL)
			cmd_cancel();
		else if (e.getActionCommand() == ConfirmPanel.A_REFRESH)
			cmd_refresh();
		//
		else if (e.getSource() == bIgnore)
			cmd_ignore();
		else if (e.getSource() == bNew)
			cmd_new();
		else if (e.getSource() == bSave)
			cmd_save();
		else if (e.getSource() == bDelete)
			cmd_delete();
		//
		else    // ConfirmPanel.A_OK and enter in fields
		{
			if (e.getSource() == confirmPanelA.getOKButton())
				cmd_ok_Advanced();
			else
				cmd_ok_Simple();
		}
	}	//	actionPerformed

	/**
	 *  Change Listener (tab change)
	 *  @param e ChangeEbent
	 */
	public void stateChanged(ChangeEvent e)
	{
		Log.trace(Log.l1_User, "Find.stateChanged");
		if (tabbedPane.getSelectedIndex() == 0)
			this.getRootPane().setDefaultButton(confirmPanelS.getOKButton());
		else
		{
			initFindAdvanced();
			this.getRootPane().setDefaultButton(confirmPanelA.getOKButton());
		}
	}	//  stateChanged

	/**
	 *	Simple OK Button pressed
	 */
	private void cmd_ok_Simple()
	{
		//	Create Query String
		m_query = new MQuery(m_targetTab.getTableName());
		if (hasValue && !valueField.getText().equals("%") && valueField.getText().length() != 0)
		{
			String value = valueField.getText().toUpperCase();
			if (!value.endsWith("%"))
				value += "%";
			m_query.addRestriction("UPPER(Value)", MQuery.LIKE, value, valueLabel.getText(), value);
		}
		//
		if (hasDocNo && !docNoField.getText().equals("%") && docNoField.getText().length() != 0)
		{
			String value = docNoField.getText().toUpperCase();
			if (!value.endsWith("%"))
				value += "%";
			m_query.addRestriction("UPPER(DocumentNo)", MQuery.LIKE, value, docNoLabel.getText(), value);
		}
		//
		if ((hasName) && !nameField.getText().equals("%") && nameField.getText().length() != 0)
		{
			String value = nameField.getText().toUpperCase();
			if (!value.endsWith("%"))
				value += "%";
			m_query.addRestriction("UPPER(Name)", MQuery.LIKE, value, nameLabel.getText(), value);
		}
		//
		if (hasDescription && !descriptionField.getText().equals("%") && descriptionField.getText().length() != 0)
		{
			String value = descriptionField.getText().toUpperCase();
			if (!value.endsWith("%"))
				value += "%";
			m_query.addRestriction("UPPER(Description)", MQuery.LIKE, value, descriptionLabel.getText(), value);
		}
		//	Special Editors
		for (int i = 0; i < m_sEditors.size(); i++)
		{
			VEditor ved = (VEditor)m_sEditors.get(i);
			Object value = ved.getValue();
			if (value != null)
			{
				String ColumnName = ((Component)ved).getName ();
				Log.trace (Log.l5_DData, "Find.cmd_ok_Simple - " + ColumnName, value);
				m_query.addRestriction(ColumnName, MQuery.EQUAL, value, ColumnName, ved.getDisplay());
			}
		}	//	editors


		//	Test for no records
		if (getNoOfRecords(m_query) != 0)
			dispose();
	}	//	cmd_ok_Simple

	/**
	 *	Advanced OK Button pressed
	 */
	private void cmd_ok_Advanced()
	{
		//	save pending
		if (bSave.isEnabled())
			cmd_save();
		if (getNoOfRecords(m_query) != 0)
			dispose();
	}	//	cmd_ok_Advanced

	/**
	 *	Cancel Button pressed
	 */
	private void cmd_cancel()
	{
		Log.trace(Log.l1_User, "Find.cmd_cancel");
		m_query = null;
		dispose();
	}	//	cmd_ok

	/**
	 *	Ignore
	 */
	private void cmd_ignore()
	{
		Log.trace(Log.l1_User, "Find.cmd_ignore");
	}	//	cmd_ignore

	/**
	 *	New record
	 */
	private void cmd_new()
	{
		Log.trace(Log.l1_User, "Find.cmd_new");
		DefaultTableModel model = (DefaultTableModel)advancedTable.getModel();
		model.addRow(new Object[] {null, MQuery.OPERATORS[MQuery.EQUAL_INDEX], null, null});
	}	//	cmd_new

	/**
	 *	Save
	 */
	private void cmd_save()
	{
		Log.trace(Log.l1_User, "Find.cmd_save");
		advancedTable.stopEditor(true);
		//
		m_query = new MQuery();
		for (int row = 0; row < advancedTable.getRowCount(); row++)
		{
			//	Column
			Object column = advancedTable.getValueAt(row, INDEX_COLUMNNAME);
			if (column == null)
				continue;
			String ColumnName = ((ValueNamePair)column).getValue();
			String infoName = column.toString();
			MField field = getTargetMField(ColumnName);
			//	Op
			Object op = advancedTable.getValueAt(row, INDEX_OPERATOR);
			if (op == null)
				continue;
			String Operator = ((ValueNamePair)op).getValue();
			//	Value
			Object value = advancedTable.getValueAt(row, INDEX_VALUE);
			if (value == null)
				continue;
			Object parsedValue = parseValue(field, value);
			if (parsedValue == null)
				continue;
			String infoDisplay = value.toString();
			if (field.isLookup())
				infoDisplay = field.getLookup().getDisplay(value);
			else if (field.getDisplayType() == DisplayType.YesNo)
				infoDisplay = Msg.getMsg(Env.getCtx(), infoDisplay.equals("Y") ? "Yes" : "No");
			//
			if (MQuery.OPERATORS[MQuery.BETWEEN_INDEX].equals(op))
			{
				Object value2 = advancedTable.getValueAt(row, INDEX_VALUE2);
				if (value2 == null)
					continue;
				Object parsedValue2 = parseValue(field, value2);
				String infoDisplay_to = value2.toString();
				if (parsedValue2 == null)
					continue;
				m_query.addRangeRestriction(ColumnName, parsedValue, parsedValue2,
					infoName, infoDisplay, infoDisplay_to);
			}
			else
				m_query.addRestriction(ColumnName, Operator, parsedValue,
					infoName, infoDisplay);
		}
	}	//	cmd_save

	/**
	 * 	Parse Value
	 * 	@param field column
	 * 	@param in value
	 * 	@return data type corected value
	 */
	private Object parseValue (MField field, Object in)
	{
		if (in == null)
			return null;
		int dt = field.getDisplayType();
		try
		{
			//	Return Integer
			if (DisplayType.isID(dt) && field.getColumnName().endsWith("_ID"))
			{
				if (in instanceof Integer)
					return in;
				int i = Integer.parseInt(in.toString());
				return new Integer(i);
			}
			//	Return BigDecimal
			else if (DisplayType.isNumeric(dt))
			{
				if (in instanceof BigDecimal)
					return in;
				return DisplayType.getNumberFormat(dt).parse(in.toString());
			}
			//	Return Timestamp
			else if (DisplayType.isDate(dt))
			{
				if (in instanceof Timestamp)
					return in;
				long time = 0;
				try
				{
					time = DisplayType.getDateFormat_JDBC().parse(in.toString()).getTime();
					return new Timestamp(time);
				}
				catch (Exception e)
				{
					Log.error("Find.parseValue " + in + "(" + in.getClass() + ")" + e);
					time = DisplayType.getDateFormat(dt).parse(in.toString()).getTime();
				}
				return new Timestamp(time);
			}
		}
		catch (Exception ex)
		{
			ex.printStackTrace();
			String error = ex.getLocalizedMessage();
			if (error == null || error.length() == 0)
				error = ex.toString();
			StringBuffer errMsg = new StringBuffer();
			errMsg.append(field.getColumnName()).append(" = ").append(in).append(" - ").append(error);
			//
			ADialog.error(0, this, "ValidationError", errMsg.toString());
			return null;
		}

		return in;
	}	//	parseValue

	/**
	 *	Delete
	 */
	private void cmd_delete()
	{
		Log.trace(Log.l1_User, "Find.cmd_delete");
		DefaultTableModel model = (DefaultTableModel)advancedTable.getModel();
		int row = advancedTable.getSelectedRow();
		if (row >= 0)
			model.removeRow(row);
		cmd_refresh();
	}	//	cmd_delete

	/**
	 *	Refresh
	 */
	private void cmd_refresh()
	{
		Log.trace(Log.l1_User, "Find.cmd_refresh");
		int records = getNoOfRecords(m_query);
		setStatusDB (records);
		statusBar.setStatusLine("");
	}	//	cmd_refresh

	/*************************************************************************/

	/**
	 *	Get Query - Retrieve result
	 *  @return String representation of query
	 */
	public MQuery getQuery()
	{
		Log.trace(Log.l1_User, "Find.getQuery=" + m_query);
		return m_query;
	}	//	getQuery

	/**
	 *	Get the number of records of target tab
	 *  @param query where clause for target tab
	 *  @return number of selected records
	 */
	private int getNoOfRecords(MQuery query)
	{
		Log.trace(Log.l4_Data, "Find.getNoOfRecords - " + query);
		StringBuffer sql = new StringBuffer("SELECT COUNT(*) FROM ");
		sql.append(m_targetTab.getTableName());
		boolean hasWhere = false;
		if (m_targetTab.getWhereExtended().length() > 0)
		{
			sql.append(" WHERE ").append(m_targetTab.getWhereExtended());
			hasWhere = true;
		}
		if (query != null && query.isActive())
		{
			if (hasWhere)
				sql.append(" AND ");
			else
				sql.append(" WHERE ");
			sql.append(query.getWhereClause());
		}
		//	Add Access
		String finalSQL = Access.addRWAccessSQL(Env.getCtx(), sql.toString(), m_targetTab.getTableName(), false);
		finalSQL = Env.parseContext(Env.getCtx(), m_targetWindowNo, finalSQL, false);
		Env.setContext(Env.getCtx(), m_targetWindowNo, TABNO, "FindSQL", finalSQL);

		int count = 0;

		//  Execute Qusery
		try
		{
			Statement stmt = DB.createStatement();
			ResultSet rs = stmt.executeQuery(finalSQL);
			if (rs.next())
				count = rs.getInt(1);
			rs.close();
			stmt.close();
		}
		catch (SQLException e)
		{
			Log.error("Find.getNoOfRecords SQL=" + finalSQL, e);
		}

		if (count == 0)
			ADialog.info(m_targetWindowNo, this, "FindZeroRecords");
		if (query != null)
			statusBar.setStatusToolTip (query.getWhereClause());
		return count;
	}	//	getNoOfRecords

	/**
	 *	Display current count
	 *  @param currentCount String representation of current/total
	 */
	private void setStatusDB (int currentCount)
	{
		String text = " " + currentCount + " / " + m_total + " ";
		statusBar.setStatusDB(text);
	}	//	setDtatusDB

	/*************************************************************************/

	/**
	 *	Grid Status Changed.
	 *  @param e DataStatueEvent
	 */
	public void dataStatusChanged (DataStatusEvent e)
	{
		Log.trace(Log.l4_Data, "Find.dataStatusChanged", e.getMessage());
		//	Action control
		boolean changed = e.isChanged();
		bIgnore.setEnabled(changed);
		bNew.setEnabled(!changed);
		bSave.setEnabled(changed);
		bDelete.setEnabled(!changed);
	}	//	statusChanged

	/**
	 * 	Get Target MField
	 * 	@param columnName column name
	 * 	@return MField
	 */
	public MField getTargetMField (String columnName)
	{
		if (columnName == null)
			return null;
		for (int c = 0; c < m_targetTab.getFieldCount(); c++)
		{
			MField field = m_targetTab.getField(c);
			if (columnName.equals(field.getColumnName()))
				return field;
		}
		return null;
	}	//	getTargetMField

}	//	Find

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -