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

📄 cattransformationoperatorproperty.java

📁 一个数据挖掘软件ALPHAMINERR的整个过程的JAVA版源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        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 + -