private void sortAddToTree(Object sid) { // // sort session elements // List<TestSession> caseSessions = parentCase.getSessions(); // List<Integer> sortedids = new ArrayList<Integer>(); // for (TestSession s : caseSessions){ // sortedids.add(s.getId()); // // remove tree items // tree.removeItem(s.getId()); // } // Collections.sort(sortedids); // Collections.reverse(sortedids); // System.out.println("SORTED ID's: " + sortedids); List<Object> sortedids = new ArrayList<Object>(); for (Object child : tree.getChildren(parentcase.getId())) { sortedids.add(child); } for (Object s : sortedids) { // remove tree items tree.removeItem(s); } // add new item and then re-add old items tree.addItem(sid); tree.setParent(sid, parentcase.getId()); tree.setChildrenAllowed(sid, false); tree.setItemCaption(sid, sessions.getItem(sid).getEntity().getTitle()); // newsession.getTitle() tree.expandItem(parentcase.getId()); tree.select(sid); for (Object id : sortedids) { // testcase.getSessions() matchingsessions Object sessionid = sessions.getItem(id).getEntity().getId(); tree.addItem(sessionid); tree.setItemCaption(sessionid, sessions.getItem(id).getEntity().getTitle()); tree.setParent(sessionid, parentcase.getId()); tree.setChildrenAllowed(sessionid, false); } }
/* * (non-Javadoc) * * @see com.vaadin.ui.AbstractSelect#changeVariables(java.lang.Object, * java.util.Map) */ @Override public void changeVariables(Object source, Map<String, Object> variables) { if (variables.containsKey("clickedKey")) { String key = (String) variables.get("clickedKey"); Object id = itemIdMapper.get(key); MouseEventDetails details = MouseEventDetails.deSerialize((String) variables.get("clickEvent")); Item item = getItem(id); if (item != null) { fireEvent(new ItemClickEvent(this, item, id, null, details)); } } if (!isSelectable() && variables.containsKey("selected")) { // Not-selectable is a special case, AbstractSelect does not support // TODO could be optimized. variables = new HashMap<String, Object>(variables); variables.remove("selected"); } // Collapses the nodes if (variables.containsKey("collapse")) { final String[] keys = (String[]) variables.get("collapse"); for (int i = 0; i < keys.length; i++) { final Object id = itemIdMapper.get(keys[i]); if (id != null && isExpanded(id)) { expanded.remove(id); if (expandedItemId == id) { expandedItemId = null; } fireCollapseEvent(id); } } } // Expands the nodes if (variables.containsKey("expand")) { boolean sendChildTree = false; if (variables.containsKey("requestChildTree")) { sendChildTree = true; } final String[] keys = (String[]) variables.get("expand"); for (int i = 0; i < keys.length; i++) { final Object id = itemIdMapper.get(keys[i]); if (id != null) { expandItem(id, sendChildTree); } } } // AbstractSelect cannot handle multiselection so we handle // it ourself if (variables.containsKey("selected") && isMultiSelect() && multiSelectMode == MultiSelectMode.DEFAULT) { handleSelectedItems(variables); variables = new HashMap<String, Object>(variables); variables.remove("selected"); } // Selections are handled by the select component super.changeVariables(source, variables); // Actions if (variables.containsKey("action")) { final StringTokenizer st = new StringTokenizer((String) variables.get("action"), ","); if (st.countTokens() == 2) { final Object itemId = itemIdMapper.get(st.nextToken()); final Action action = actionMapper.get(st.nextToken()); if (action != null && (itemId == null || containsId(itemId)) && actionHandlers != null) { for (Handler ah : actionHandlers) { ah.handleAction(action, this, itemId); } } } } }
public void buttonClick(ClickEvent event) { if (event.getButton() == createButton) { TestSession queriedSession = null; String wrongTitle = ""; try { // form.enableValidationMessages(); // title.setValidationVisible(true); // commit the fieldgroup binder.commit(); // check SESSION title doesnt exist for THIS SESSION int id = 0; boolean titleOK = true; id = newSessionItem.getBean().getId(); // testsession.getId(); // System.out.println("parentCase.getSessions() : " + parentcase.getSessions()); for (TestSession s : parentcase.getSessions()) { // sessions.getItemIds() // System.out.println("Existing title -> new title : " + s.getTitle() + "->" + // testsession.getTitle()); // System.out.println("Existing id -> new id : " + s.getId() + "->" + id); if (s.getTitle().equals(testsession.getTitle()) && !(s.getId() == id)) { testsession.setTitle(prevTitle); if (clonemode != true && editmode == true) { sessions.addEntity(testsession); } wrongTitle = s.getTitle(); titleOK = false; break; } } if (titleOK == true) { // System.out.println("TITLE WAS FINE. EDITING"); // add NEW bean object to db through jpa container if (editmode == false && (clonemode == false)) { // add to container sessions.addEntity(newSessionItem.getBean()); // jpa container // add created item to tree (after retrieving db generated id) EntityManager em = Persistence.createEntityManagerFactory("mbpet").createEntityManager(); Query query = em.createQuery( "SELECT OBJECT(t) FROM TestSession t WHERE t.title = :title AND t.parentcase = :parentcase"); // query.setParameter("title", newsession.getTitle()); query.setParameter("title", testsession.getTitle()); query.setParameter("parentcase", testsession.getParentcase()); // MainView.sessionUser queriedSession = (TestSession) query.getSingleResult(); // queriedSession = (TestSession) query.setParameter("title", // testsession.getTitle()).getSingleResult(); // System.out.println("the generated id is: " + queriedSession.getId()); id = queriedSession.getId(); // here is the id we need for tree // create session directory for test and reports new FileSystemUtils() .createSessionTestDir( testsession.getParentcase().getOwner().getUsername(), testsession.getParentcase().getTitle(), testsession.getTitle()); // create default parameters object new ParametersEditor(sessions.getItem(id).getEntity()); // create empty adapter object new AdapterEditor(sessions.getItem(id).getEntity()); // create empty adapterXML object new AdapterXMLEditor(sessions.getItem(id).getEntity()); // create default models ModelUtils modelUtils = new ModelUtils(); modelUtils.createDefaultModel( "user_types", sessions.getItem(id).getEntity()); // currmodel.getParentsession(), modelUtils.createDefaultModel( "normal_user", sessions.getItem(id).getEntity()); // currmodel.getParentsession(), // add to tree in right order if (tree.hasChildren(parentcase.getId())) { sortAddToTree(id); } else { tree.addItem(id); tree.setParent(id, parentcase.getId()); tree.setChildrenAllowed(id, false); tree.setItemCaption( id, sessions.getItem(id).getEntity().getTitle()); // newsession.getTitle() tree.expandItem(parentcase.getId()); tree.select(id); } // update parent Case to add Session to testCase List<Session> sessions parentcase.addSession(queriedSession); testcases.addEntity(parentcase); // List<TestSession> listofsessions = parentCase.getSessions(); // listofsessions.add(queriedSession); // //sessions.getItem(id).getEntity() // parentCase.setSessions(listofsessions); // System.out.println("WHAT IS NEW LIST OF SESSIONS: " // + parentcase.getSessions()); // testing purposes // for (TestSession s : parentcase.getSessions()) { // System.out.println(s.getId() + " - " // + s.getTitle()); // testing purposes // } } else if (editmode == true) { // EDIT existing object // // commit the fieldgroup // binder.commit(); // 1 UPDATE parentcase reference parentcase.updateSessionData(sessions.getItem(testsession.getId()).getEntity()); // System.out.println("Test session is now: " + testsession.getTitle()); // 2 UPDATE container sessions.addEntity(newSessionItem.getBean()); // System.out.println("Entity is now: " + // sessions.getItem(testsession.getId()).getEntity().getTitle()); // 3 UPDATE tree title tree.setItemCaption( testsession.getId(), sessions.getItem(testsession.getId()).getEntity().getTitle()); // 4. UPDATE models (maybe not necessary) // // ModelEditorTable.modelsTable.setContainerDataSource(ModelEditorTable.modelsTable.getContainerDataSource()); // for (Model m : testsession.getModels()) { // // m.setParentsession(sessions.getItem(testsession.getId()).getEntity()); // System.out.println("Sessions' model's session title: " + // m.getParentsession().getTitle()); //// // m.updateSessionData(sessions.getItem(testsession.getId()).getEntity()); // } // edit session directory for test and reports if (!prevTitle.equals(testsession.getTitle())) { new FileSystemUtils() .renameSessionDir( testsession.getParentcase().getOwner().getUsername(), testsession.getParentcase().getTitle(), prevTitle, testsession.getTitle()); } // // update parameters and adapter ? // System.out.println("Sessions' params's session title: " + // testsession.getParameters().getOwnersession().getTitle()); // System.out.println("Sessions' adapter session title: " + // testsession.getAdapter().getOwnersession().getTitle()); // System.out.println("Sessions' adapterXML session title: " + // testsession.getAdapterXML().getOwnersession().getTitle()); id = testsession.getId(); } else if (clonemode == true) { // CLONE // System.out.println("\n\nWE ARE IN CLONE MODE!!!!!!!!!\n\n"); // TestSession clone = newSessionItem.getBean(); // // 1 commit the fieldgroup // binder.commit(); // 2 add to container sessions.addEntity(newSessionItem.getBean()); // jpa container // 3 retrieving db generated id EntityManager em = Persistence.createEntityManagerFactory("mbpet").createEntityManager(); Query query = em.createQuery("SELECT OBJECT(t) FROM TestSession t WHERE t.title = :title"); // query.setParameter("title", newsession.getTitle()); queriedSession = (TestSession) query.setParameter("title", testsession.getTitle()).getSingleResult(); // System.out.println("the generated id is: " + queriedSession.getId()); id = queriedSession.getId(); // here is the id we need for tree // 4 clone models EntityManager em2 = Persistence.createEntityManagerFactory("mbpet").createEntityManager(); Query query2 = em2.createQuery( "SELECT OBJECT(m) FROM Model m WHERE m.title = :title AND m.parentsession = :parentsession"); for (Model m : subject.getModels()) { // copy over model values Model newmodel = new Model(m.getTitle(), queriedSession, m.getParentsut()); // "(clone) " + newmodel.setDotschema(m.getDotschema()); // add to container models.addEntity(newmodel); // jpa container // retrieve generated id from db query2.setParameter("title", newmodel.getTitle()); query2.setParameter("parentsession", queriedSession); Model queriedModel = (Model) query2.getSingleResult(); // System.out.println("the generated MODEL id is: " + queriedModel.getId() + " of // session ->" + queriedSession.getId()); // update parent Case to add Session to testCase List<Session> sessions parentcase.addModel(queriedModel); queriedSession.addModel(queriedModel); // //write model to disk // FileSystemUtils fileUtils = new FileSystemUtils(); // fileUtils.writeModelToDisk( // parentcase.getOwner().getUsername(), // parentcase.getTitle(), // queriedSession.getTitle(), // queriedSession.getParameters().getModels_folder(), // queriedModel); } sessions.addEntity(queriedSession); // 5 clone parameters String cloneParams = "Fill in parameters for Test Session '" + queriedSession.getTitle() + "'"; if (!(subject.getParameters().getSettings_file() == null)) { // || !(testsession.getParameters().getSettings_file().equals("")) cloneParams = subject.getParameters().getSettings_file(); } // System.out.println("\n\n the cloned parameters are:\n" + // cloneParams + "\n\n"); new ParametersEditor(queriedSession, cloneParams); // 6 clone adapter.py String cloneAdapter = "Fill in adapter for Test Session '" + queriedSession.getTitle() + "'"; if (!(subject.getAdapter().getAdapter_file() == null) || !(subject .getAdapter() .getAdapter_file() .equals( ""))) { // || !(testsession.getParameters().getSettings_file().equals("")) cloneAdapter = subject.getAdapter().getAdapter_file(); } // System.out.println("\n\n the cloned adapter is:\n" + // cloneAdapter + "\n\n"); new AdapterEditor(queriedSession, cloneAdapter); // 7 clone adapter.xml String cloneAdapterXML = "Fill in adapterXML for Test Session '" + queriedSession.getTitle() + "'"; if (!(subject.getAdapterXML().getAdapterXML_file() == null) || !(subject .getAdapterXML() .getAdapterXML_file() .equals( ""))) { // || !(testsession.getParameters().getSettings_file().equals("")) cloneAdapterXML = subject.getAdapterXML().getAdapterXML_file(); } // System.out.println("\n\n the cloned adapterXML is:\n" + // cloneAdapterXML + "\n\n"); new AdapterXMLEditor(queriedSession, cloneAdapterXML); // 8 write models to disk FileSystemUtils fileUtils = new FileSystemUtils(); fileUtils.writeModelsToDisk( parentcase.getOwner().getUsername(), parentcase.getTitle(), queriedSession.getTitle(), queriedSession.getParameters().getModels_folder(), subject.getModels()); // 9 add to tree in right order if (tree.hasChildren(parentcase.getId())) { sortAddToTree(id); } else { tree.addItem(id); tree.setParent(id, parentcase.getId()); tree.setChildrenAllowed(id, false); tree.setItemCaption( id, sessions.getItem(id).getEntity().getTitle()); // newsession.getTitle() tree.expandItem(parentcase.getId()); tree.select(id); } // 10 update parent Case to add Session to testCase List<Session> sessions parentcase.addSession(queriedSession); // List<TestSession> listofsessions = parentCase.getSessions(); // listofsessions.add(queriedSession); // //sessions.getItem(id).getEntity() // parentCase.setSessions(listofsessions); // 9 create session directory for test and reports new FileSystemUtils() .createSessionTestDir( queriedSession.getParentcase().getOwner().getUsername(), queriedSession.getParentcase().getTitle(), queriedSession.getTitle()); // System.out.println("WHAT IS NEW LIST OF SESSIONS: " + // parentCase.getSessions()); // testing purposes // for (TestSession s : parentCase.getSessions()) { // System.out.println(s.getId() + " - " + s.getTitle()); // testing // purposes // } } // System.out.println("WHAT IS NEW LIST OF SESSIONS: " + // parentCase.getSessions()); // testing purposes // for (TestSession s : parentCase.getSessions()) { // System.out.println(s.getId() + " - " + s.getTitle()); // testing // purposes // } if (clonemode == true && navToCasePage == true) { confirmNotification(queriedSession.getTitle(), "was created"); close(); } else if (clonemode == true && navToCasePage == false) { confirmNotification(queriedSession.getTitle(), "was CLONED"); getUI() .getNavigator() .navigateTo( MainView.NAME + "/" + parentcase.getTitle() + "/" + queriedSession.getTitle() + "id=" + queriedSession .getId()); // sessions.getItem(id).getEntity() close(); } else if (navToCasePage == true && editmode == false) { // 4 UPDATE table title table.select(newSessionItem.getBean().getId()); // (testsession.getId()); confirmNotification(testsession.getTitle(), "was created"); close(); // getUI().getNavigator() // .navigateTo(MainView.NAME + "/" + // parentCase.getTitle()); //sessions.getItem(id).getEntity() } else if (navToCasePage == true && editmode == true) { getUI() .getNavigator() .navigateTo( MainView.NAME + "/" + parentcase.getTitle() + "-sut=" + parentcase.getId()); // sessions.getItem(id).getEntity() confirmNotification(testsession.getTitle(), "was edited"); close(); } else if (editmode == true && navToCasePage == false) { getUI() .getNavigator() .navigateTo( MainView.NAME + "/" + parentcase.getTitle() + "/" + newSessionItem.getBean().getTitle() + "id=" + newSessionItem .getBean() .getId()); // testsession.getTitle() sessions.getItem(id).getEntity() } else { getUI() .getNavigator() .navigateTo( MainView.NAME + "/" + parentcase.getTitle() + "/" + queriedSession.getTitle() + "id=" + queriedSession .getId()); // testsession.getTitle() sessions.getItem(id).getEntity() } // title already existed } else { // System.out.println("title was NOT fine."); // testsession = sessions.getItem(id).getEntity(); // System.out.println("db session is: " + testsession.getId() + " " + // testsession.getTitle()); if (editmode == false && clonemode == false) { binder.discard(); Notification.show( "The title '" + wrongTitle + "' already exists for this SUT. Please rename this session.", Type.ERROR_MESSAGE); // testsession.getTitle() UI.getCurrent().addWindow(new TestSessionEditor(tree, table, parentcase, true)); } else if (editmode == true) { binder.discard(); Notification.show( "The title '" + wrongTitle + "' already exists for this SUT. Please rename this session.", Type.ERROR_MESSAGE); if (navToCasePage == true) { UI.getCurrent() .addWindow( new TestSessionEditor( tree, id, parentcase, table)); // sessions.getItem(testsession.getId()).getEntity().getId() } else { UI.getCurrent().addWindow(new TestSessionEditor(tree, id, parentcase)); } } else if (clonemode == true) { binder.discard(); Notification.show( "The title '" + wrongTitle + "' already exists for this SUT. Please rename this session.", Type.ERROR_MESSAGE); UI.getCurrent() .addWindow( new TestSessionEditor( tree, subject.getId(), // testsession sessions.getItem( parentcase, table, true)); } } } catch (CommitException e) { binder.discard(); Notification.show("'Title' cannot be Empty. Please try again.", Type.WARNING_MESSAGE); UI.getCurrent().addWindow(new TestSessionEditor(tree, parentcase, true)); } catch (NonUniqueResultException e) { e.printStackTrace(); binder.discard(); Notification.show( "The title '" + testsession.getTitle() + "' already exists for this SUT. Please rename this session.", Type.ERROR_MESSAGE); UI.getCurrent().addWindow(new TestSessionEditor(tree, parentcase, true)); } // catch (NonUniqueResultException e) { // binder.discard(); // Notification.show("'Title' must be a unique name.\n'" + // queriedSession.getTitle() + // "' already exists.\n\nPlease try again.", Type.WARNING_MESSAGE); // UI.getCurrent().addWindow(new TestSessionEditor(tree, parentCase)); // } } else if (event.getButton() == cancelButton) { binder.discard(); } // binder.clear(); // form.disableValidationMessages(); // setTreeItemsExpanded(); close(); // Close the sub-window }