org.eclipse.osee.ats.navigate.CreateNewUsersByNameItem.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.osee.ats.navigate.CreateNewUsersByNameItem.java

Source

/*******************************************************************************
 * Copyright (c) 2004, 2007 Boeing.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Boeing - initial API and implementation
 *******************************************************************************/

package org.eclipse.osee.ats.navigate;

import java.util.HashSet;
import java.util.Set;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.osee.ats.core.util.AtsUtilCore;
import org.eclipse.osee.ats.internal.Activator;
import org.eclipse.osee.ats.internal.AtsClientService;
import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
import org.eclipse.osee.framework.core.exception.UserNotInDatabase;
import org.eclipse.osee.framework.core.util.XResultData;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.framework.jdk.core.util.GUID;
import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.framework.logging.OseeLevel;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager;
import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite.TableLoadOption;
import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItem;
import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateItemAction;
import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
import org.eclipse.osee.framework.ui.skynet.artifact.massEditor.MassArtifactEditor;
import org.eclipse.osee.framework.ui.skynet.render.PresentationType;
import org.eclipse.osee.framework.ui.skynet.render.RendererManager;
import org.eclipse.osee.framework.ui.skynet.results.XResultDataUI;
import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog;
import org.eclipse.osee.framework.ui.swt.Displays;

/**
 * Admin only. Create new users by name, each will be given a guid as user id. Development use only.
 * 
 * @author Donald G. Dunne
 */
public class CreateNewUsersByNameItem extends XNavigateItemAction {

    public CreateNewUsersByNameItem(XNavigateItem parent) {
        super(parent, "Admin - Create New Users by Name (Testing Only)", FrameworkImage.USER);
    }

    @Override
    public void run(TableLoadOption... tableLoadOptions) throws OseeCoreException {
        EntryDialog ed = new EntryDialog(Displays.getActiveShell(), "Create New User(s)", null,
                "Enter User name(s) one per line", MessageDialog.QUESTION, new String[] { "OK", "Cancel" }, 0);
        ed.setFillVertically(true);
        if (ed.open() == 0) {
            Set<String> newUserNames = new HashSet<String>();
            for (String str : ed.getEntry().split(System.getProperty("line.separator"))) {
                newUserNames.add(str);
            }
            XResultData resultData = new XResultData(false);
            for (String newUserName : newUserNames) {
                if (!Strings.isValid(newUserName)) {
                    resultData.logError("user name can't be blank");
                }
                try {
                    if (AtsClientService.get().getUserService().getUserByName(newUserName) != null) {
                        resultData.logError(String.format("User [%s] already exists", newUserName));
                    }
                } catch (UserNotInDatabase ex) {
                    // do nothing
                }
            }
            if (!resultData.isEmpty()) {
                resultData.log("\nErrors found while creating users.\nPlease resolve and try again.");
                XResultDataUI.report(resultData, "Create New User(s) Error");
                return;
            }
            try {
                SkynetTransaction transaction = TransactionManager.createTransaction(AtsUtilCore.getAtsBranch(),
                        "Create New User(s)");
                Set<Artifact> newUsers = createNewUserItemTx(transaction, newUserNames);
                transaction.execute();

                if (newUsers.size() == 1) {
                    RendererManager.open(newUsers.iterator().next(), PresentationType.DEFAULT_OPEN);
                } else {
                    MassArtifactEditor.editArtifacts("New Users", newUsers, TableLoadOption.None);
                }

            } catch (Exception ex) {
                OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex);
            }
        }
    }

    private Set<Artifact> createNewUserItemTx(SkynetTransaction transaction, Set<String> userNames)
            throws OseeCoreException {
        Set<Artifact> newVersions = new HashSet<Artifact>();
        for (String userName : userNames) {
            Artifact userArt = ArtifactTypeManager.addArtifact(CoreArtifactTypes.User, AtsUtilCore.getAtsBranch(),
                    userName);
            userArt.setSoleAttributeValue(CoreAttributeTypes.UserId, GUID.create());
            userArt.persist(transaction);
            newVersions.add(userArt);
        }
        return newVersions;
    }
}