96bc22e204449652a3ab91c6b4b37a025c14e3bc
[sdc.git] /
1 package org.openecomp.core.tools.commands;
2
3 import static org.openecomp.core.tools.commands.CommandName.CLEAN_USER_DATA;
4
5 import com.amdocs.zusammen.datatypes.Id;
6 import com.amdocs.zusammen.datatypes.SessionContext;
7 import com.amdocs.zusammen.datatypes.UserInfo;
8 import com.amdocs.zusammen.datatypes.item.ItemVersion;
9 import java.util.Collection;
10 import org.apache.commons.cli.CommandLine;
11 import org.apache.commons.cli.Option;
12 import org.openecomp.core.zusammen.db.ZusammenConnector;
13 import org.openecomp.core.zusammen.db.ZusammenConnectorFactory;
14 import org.openecomp.sdc.logging.api.Logger;
15 import org.openecomp.sdc.logging.api.LoggerFactory;
16
17 public class CleanUserDataCommand extends Command {
18
19     private static final Logger LOGGER = LoggerFactory.getLogger(CleanUserDataCommand.class);
20     private static final String ITEM_ID_OPTION = "i";
21     private static final String USER_OPTION = "u";
22
23     CleanUserDataCommand() {
24         options.addOption(
25                 Option.builder(ITEM_ID_OPTION).hasArg().argName("item_id").desc("id of the item to clean, mandatory")
26                       .build());
27         options.addOption(Option.builder(USER_OPTION).hasArg().argName("user")
28                                 .desc("the user of which the item data will be cleaned for, mandatory").build());
29     }
30
31     @Override
32     public boolean execute(String[] args) {
33         CommandLine cmd = parseArgs(args);
34         if (!cmd.hasOption(ITEM_ID_OPTION) || !cmd.hasOption(USER_OPTION)) {
35             LOGGER.error("Arguments i and u are mandatory");
36             return false;
37         }
38         String itemId = cmd.getOptionValue(ITEM_ID_OPTION);
39         String user = cmd.getOptionValue(USER_OPTION);
40
41         SessionContext context = createSessionContext(user);
42         ZusammenConnector zusammenConnector = ZusammenConnectorFactory.getInstance().createInterface();
43
44         Id itemIdObj = new Id(itemId);
45         Collection<ItemVersion> versions = zusammenConnector.listPublicVersions(context, itemIdObj);
46         for (ItemVersion version : versions) {
47             try {
48                 zusammenConnector.cleanVersion(context, itemIdObj, version.getId());
49             } catch (Exception e) {
50                 LOGGER.error(
51                         String.format("Error occurred while cleaning item %s version %s from user %s space", itemId,
52                                 version.getId(), user), e);
53             }
54         }
55         return true;
56     }
57
58     @Override
59     public CommandName getCommandName() {
60         return CLEAN_USER_DATA;
61     }
62
63     private static SessionContext createSessionContext(String user) {
64         SessionContext sessionContext = new SessionContext();
65         sessionContext.setUser(new UserInfo(user));
66         sessionContext.setTenant("dox");
67         return sessionContext;
68     }
69 }