package ru.gazprom.gtnn.minos.entity;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.AbstractAction;
import javax.swing.JTree;
import javax.swing.tree.TreePath;
import ru.gazprom.gtnn.minos.models.BasicModel;
import ru.gazprom.gtnn.minos.util.DatabaseConnectionKeeper;
import ru.gedr.util.tuple.Pair;
public class MakeProfileAction extends AbstractAction {
private static final long serialVersionUID = 1L;
private JTree competenceTree;
private JTree profileTree;
public MakeProfileAction(JTree competenceTree, JTree profileTree) {
this.competenceTree = competenceTree;
this.profileTree = profileTree;
}
@Override
public void actionPerformed(ActionEvent arg0) {
if( competenceTree.isSelectionEmpty() || profileTree.isSelectionEmpty() )
return;
TreePath[] competencePaths = competenceTree.getSelectionPaths();
List<Integer> lstCompetenceID = new ArrayList<>();
// load selected competence node
for(int i = 0; i < competencePaths.length; i++) {
if(competencePaths[i].getLastPathComponent() instanceof CompetenceNode) {
CompetenceNode node = (CompetenceNode) competencePaths[i].getLastPathComponent();
lstCompetenceID.add(node.competenceIncarnatio);
}
}
if (lstCompetenceID.size() == 0)
return;
TreePath[] positionPaths = profileTree.getSelectionPaths();
// load selected position node
ProfileNode profileNode = new ProfileNode();
profileNode.profileRemove = BasicModel.endTime;
DatabaseConnectionKeeper kdb = ((BasicModel)competenceTree.getModel() ).getDatabaseConnectionKeeper();
for(int i = 0; i < positionPaths.length; i++) {
if(positionPaths[i].getLastPathComponent() instanceof Pair<?, ?>) {
@SuppressWarnings("unchecked")
Pair<Integer, PositionNode> p = (Pair<Integer, PositionNode> ) positionPaths[i].getLastPathComponent() ;
profileNode.profileDivisionID = p.getFirst();
profileNode.profilePositionID = p.getSecond().positionID;
for(Integer it : lstCompetenceID) {
profileNode.profileCompetenceIncarnatio = it;
try {
profileNode.insert(kdb,
ProfileNode.PROFILE_DIVISION | ProfileNode.PROFILE_POSITION |
ProfileNode.PROFILE_COMPETENCE_INCARNATIO | ProfileNode.PROFILE_REMOVE);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
}