📄 cattransformationoperatorproperty.java
字号:
targetCateg = ValueValidator.escapeParam(targetCat);
//<< added by Joyce 2005/03/17 to clear result
//Operator op = m_ParentPanel.getOperator(m_NodeID);
//((CategoricalTransformationOperator) m_Operator).clearResult();
clearOperatorTempResult();
//>>
m_Node.getParameters().remove("target");
m_Node.getParameters().remove("mode");
m_Node.getParameters().remove("targetType");
m_Node.getParameters().remove("targetDataType");
m_Node.getParameters().remove("targetCateg");
m_Node.setParameterValue("target", attrName);
m_Node.setParameterValue("mode", Integer.toString(mode));
m_Node.setParameterValue("targetType", Integer.toString(targetType));
m_Node.setParameterValue("targetDataType", Integer.toString(targetDataType));
if(targetCateg!=null)
m_Node.setParameterValue("targetCateg", targetCateg);
setPropertiesModified();
return true;
}
private void initMappingTable(){
if (m_MetaData==null || m_Node==null)
return;
int numAttr = m_MetaData.getAttributesNumber();
if (numAttr==0)
return;
MiningAttribute[] miningAttributes = m_MetaData.getAttributesArray();
m_MappingTableModel = new Hashtable<String, CatTransformationTableModel>();
for (int i=0; i<numAttr; i++){
if (miningAttributes[i] instanceof CategoricalAttribute){
CategoricalAttribute attr = (CategoricalAttribute)miningAttributes[i];
String attrName = miningAttributes[i].getName();
int numCat = attr.getCategoriesNumber();
Object[][] content = new Object[numCat][m_MetaDataTableHeader.length];
Object[] row = null;
ArrayList catValues = attr.getValues();
for (int j=0; j<catValues.size(); j++){
row = new String [2];
row[0] = ((Category)catValues.get(j)).getValue().toString();
row[1] = ((Category)catValues.get(j)).getValue().toString();
content[j] = row;
}
CatTransformationTableModel model = new CatTransformationTableModel(content, m_MetaDataTableHeader, i);
m_MappingTableModel.put(attrName, model);
}
}
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == m_ButtonApply) {
if (setContent())
{
m_ParameterChanged = true;
setPropertiesModified();
}
} else if (e.getSource() == m_ButtonReset) {
getContent();
} else if (e.getSource() == m_ButtonClose) {
close();
}else if (e.getSource() == m_TargetTypeCombo){
setTargetDataTypeCombo(m_TargetTypeCombo.getSelectedIndex());
}else if (e.getSource() == m_AttributeCombo){
String attrName =(String)m_AttributeCombo.getSelectedItem();
// if(!m_AutoCheckbox.isSelected()){
if(attrName!=null && attrName.trim().length()>0 && !attrName.equalsIgnoreCase(DEFAULT)){
m_MappingTable.setModel(m_MappingTableModel.get(attrName));
}
else {
m_MappingTable.setModel(new CatTransformationTableModel());
}
// }
}
}
public void stateChanged(ChangeEvent e) {
setEnabledAutoCheckbox(m_AutoCheckbox.isSelected());
//setEnabledDB(m_RadioDB.isSelected());
}
public void setEnabledAutoCheckbox(boolean a_flag){
if (a_flag){
//disable selected target table
m_TargetTypeCombo.setEnabled(false);
m_TargetDataTypeCombo.setEnabled(false);
//<< added by Joyce 2005/04/11
if (m_MappingTable.isEditing()) {
m_MappingTable.getCellEditor().stopCellEditing();
}//>>
m_MappingTable.setEnabled(false);
m_MappingTable.setBackground(DISABLED_COLOR);
m_MappingTable.setForeground(Color.GRAY);
}
else{
//enable seleceted target and table
m_TargetTypeCombo.setEnabled(true);
m_TargetDataTypeCombo.setEnabled(true);
m_MappingTable.setEnabled(true);
m_MappingTable.setBackground(ENABLED_COLOR);
m_MappingTable.setForeground(Color.BLACK);
String attrName =(String)m_AttributeCombo.getSelectedItem();
if(attrName!=null && attrName.trim().length()>0 && !attrName.equalsIgnoreCase(DEFAULT))
m_MappingTable.setModel(m_MappingTableModel.get(attrName));
}
}
private void setTargetDataTypeCombo(int a_State){
m_TargetDataTypeCombo.removeAllItems();
m_TargetDataTypeCombo.addItem(DEFAULT);
m_TargetDataTypeCombo.setEnabled(true);
String [] data = CATEG_DATA_TYPE;
if(a_State==CATEG){
data = CATEG_DATA_TYPE;
m_AutoCheckbox.setEnabled(false);
}
else if (a_State==NUMERIC){
data = NUM_DATA_TYPE;
m_AutoCheckbox.setEnabled(true);
}else {
m_AutoCheckbox.setEnabled(true);
return;
}
for (int i=0; i<data.length; i++){
m_TargetDataTypeCombo.addItem(data[i]);
}
}
private void setTargetDataTypeCombo(int a_State, int a_DataType){
m_TargetDataTypeCombo.removeAllItems();
m_TargetDataTypeCombo.addItem(DEFAULT);
if (a_State == INIT)
return;
String [] data = CATEG_DATA_TYPE;
int [] dataVal = CATEG_DATA_TYPE_VAL;
if(a_State==CATEG){
data = CATEG_DATA_TYPE;
dataVal = CATEG_DATA_TYPE_VAL;
m_AutoCheckbox.setEnabled(false);
}
else if (a_State==NUMERIC){
data = NUM_DATA_TYPE;
dataVal = NUM_DATA_TYPE_VAL;
m_AutoCheckbox.setEnabled(true);
}
for (int i=0; i<data.length; i++){
m_TargetDataTypeCombo.addItem(data[i]);
}
m_TargetTypeCombo.setSelectedIndex(a_State);
int index = -1;
for(int i=0; i<dataVal.length; i++){
if (a_DataType==dataVal[i]){
index = i;
break;
}
}
m_TargetDataTypeCombo.setSelectedIndex(index+1);
m_TargetTypeCombo.setEnabled(true);
m_TargetDataTypeCombo.setEnabled(true);
}
private void setTargetTypeCombo(){
m_TargetTypeCombo.removeAllItems();
m_TargetTypeCombo.addItem(DEFAULT);
for (int i=0; i<TARGET_TYPE.length; i++){
m_TargetTypeCombo.addItem(TARGET_TYPE[i]);
}
m_TargetTypeCombo.setEnabled(true);
}
private boolean validateProperty() {
String message = "";
boolean setFocus = false;
if(m_AttributeCombo.getSelectedIndex()<=0){
m_AttributeCombo.requestFocus();
setFocus = true;
message += Resource.srcStr("AttributeMessage");
m_MessageDialog.showWarning(message, Resource.srcStr("InvalidValueMessage"));
return false;
}
if( !m_AutoCheckbox.isSelected()){
if(m_TargetTypeCombo.getSelectedIndex()<=0){
if(!setFocus){
m_TargetTypeCombo.requestFocus();
setFocus = true;
}
message += Resource.srcStr("TargetTypeMessage");
m_MessageDialog.showWarning(message, Resource.srcStr("InvalidValueMessage"));
return false;
}
if(m_TargetDataTypeCombo.getSelectedIndex()<=0){
if(!setFocus){
m_TargetDataTypeCombo.requestFocus();
setFocus = true;
}
message += Resource.srcStr("TargetDataTypeMessage");
m_MessageDialog.showWarning(message, Resource.srcStr("InvalidValueMessage"));
return false;
}
if (m_TargetTypeCombo.getSelectedIndex() == NUMERIC
&& m_TargetDataTypeCombo.getSelectedIndex() == 1){
MiningAttribute mAtt = m_MetaData.getMiningAttribute(((String)m_AttributeCombo.getSelectedItem()).trim());
ArrayList catValues = ((CategoricalAttribute)mAtt).getValues();
CatTransformationTableModel model = (CatTransformationTableModel)m_MappingTable.getModel();
for (int i=0; i<model.getRowCount(); i++){
String value = model.getValueAt(i).trim();
if(value.length()>0 && !ValueValidator.isDouble(model.getValueAt(i))){
message += Resource.srcStr("CategoryMessage") + ((Category)catValues.get(i)).getValue().toString() +Resource.srcStr("DoubleMessage");
m_MessageDialog.showWarning(message, Resource.srcStr("InvalidValueMessage"));
return false;
}
}
if(!setFocus){
// TODO table cell request focus
setFocus = true;
}
}
}
// if(message.equals(""))
return true;
// else {
// MessageDialog.showWarning(message, Resource.srcStr("InvalidValueMessage"));
// return false;
// }
}
public void resetLocale() {
DEFAULT = Resource.srcStr("SelectItem");
TARGET_TYPE[0] = Resource.srcStr("Categorical");
TARGET_TYPE[1] = Resource.srcStr("Numeric");
CATEG_DATA_TYPE[0] = Resource.srcStr("String");
NUM_DATA_TYPE[0] = Resource.srcStr("Double");
m_AutoCheckbox.setText(Resource.srcStr("m_AutoCheckbox"));
//table
m_MetaDataTableHeader[0] = Resource.srcStr("Sourcecategory");
m_MetaDataTableHeader[1] = Resource.srcStr("Targetcategory");
Collection values = m_MappingTableModel.values();
Iterator iterator = values.iterator();
while(iterator.hasNext()) {
((CatTransformationTableModel)iterator.next()).setColumnIdentifiers(m_MetaDataTableHeader);
}
//title
String title = getTitle();
int index = title.indexOf('[');
title = Resource.srcStr("CategoricalTransformationTitle")+title.substring(index);
setTitle(title);
//label
((JLabel)targetLabelPanel.getComponent(0)).setText(Resource.srcStr("m_AttributeLabel")+" ");
((JLabel)targetLabelPanel.getComponent(1)).setText(Resource.srcStr("m_TargetTypeLabel"));
((JLabel)targetLabelPanel.getComponent(2)).setText(Resource.srcStr("m_TargetDataTypeLabel"));
m_ButtonReset.setText(Resource.srcStr("m_ButtonReset"));
m_ButtonApply.setText(Resource.srcStr("m_ButtonApply"));
m_ButtonClose.setText(Resource.srcStr("m_ButtonClose"));
}
}
/**
* TableModel is a special kind of TableModel for showing Operator property.
*/
class CatTransformationTableModel extends DefaultTableModel implements TableModelListener {
/**
*
*/
private static final long serialVersionUID = 1L;
Class[] types;
boolean[] canEdit;
Object[][] m_TableContent;
int m_Target = -1;
boolean m_Modified = false;
public CatTransformationTableModel(){
super();
}
/**
* Constructs a TableMode.
* @param a_TableContent an Object array storing table content.
* @param a_TableHeader an Object array storing header names.
*/
public CatTransformationTableModel(Object[][] a_TableContent, Object[] a_TableHeader, int a_Target) {
super(a_TableContent, a_TableHeader);
m_Target = a_Target;
types = new Class[a_TableHeader.length];
canEdit = new boolean[a_TableHeader.length];
for (int i=0; i<a_TableHeader.length; i++) {
types[i] = String.class;
}
canEdit[0] = false;
canEdit[1] = true;
m_TableContent = a_TableContent;
addTableModelListener(this);
}
/**
* Gets content of a row.
* @param rowIndex index of the row.
* @return String[] a String array of size 2 with the first element stores
* text of (rowIndex, 0) cell the table content; the second element stores
* text of (rowIndex, 1) cell in the table content.
*/
public String getValueAt(int rowIndex) {
return (String) super.getValueAt(rowIndex, 1);
}
public void setValueAt(String value, int rowIndex) {
// if (value.equals("Target"))
// {
// if (m_Target>=0)
// {
// super.setValueAt("Use", m_Target, 2);
// m_Target = rowIndex;
// }
// }
// else
// {
// if (m_Target==rowIndex)
// m_Target = -1;
// }
super.setValueAt(value, rowIndex, 1);
m_Modified = true;
}
/**
* @see javax.swing.event.TableModelListener#tableChanged(TableModelEvent)
*/
public void tableChanged(TableModelEvent e) {
int row = e.getFirstRow();
CatTransformationTableModel model = (CatTransformationTableModel) e.getSource();
String data = model.getValueAt(row);
m_TableContent[row][1] = data;
}
/**
* @see javax.swing.table.TableModel#getColumnClass(int)
*/
@SuppressWarnings("unchecked")
public Class getColumnClass(int columnIndex) {
return types[columnIndex];
}
/**
* @see javax.swing.table.TableModel#isCellEditable(int, int)
*/
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit[columnIndex];
}
public boolean isModified()
{
return m_Modified;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -