package eu.europeana.cloud.client.uis.rest.console; import java.util.HashMap; import java.util.Map; import javax.naming.directory.InvalidAttributesException; import eu.europeana.cloud.client.uis.rest.UISClient; import eu.europeana.cloud.client.uis.rest.console.commands.Command; import eu.europeana.cloud.client.uis.rest.console.commands.CreateCloudIdBatchCommand; import eu.europeana.cloud.client.uis.rest.console.commands.CreateCloudIdBatchWithGenerationCommand; import eu.europeana.cloud.client.uis.rest.console.commands.CreateCloudIdCommand; import eu.europeana.cloud.client.uis.rest.console.commands.CreateMappingCommand; import eu.europeana.cloud.client.uis.rest.console.commands.DeleteCloudIdCommand; import eu.europeana.cloud.client.uis.rest.console.commands.GetCloudIdCommand; import eu.europeana.cloud.client.uis.rest.console.commands.GetCloudIdsByProviderCommand; import eu.europeana.cloud.client.uis.rest.console.commands.GetCloudIdsByProviderWithPaginationCommand; import eu.europeana.cloud.client.uis.rest.console.commands.GetRecordIdsByProviderCommand; import eu.europeana.cloud.client.uis.rest.console.commands.GetRecordIdsByProviderWithPaginationCommand; import eu.europeana.cloud.client.uis.rest.console.commands.GetRecordIdsCommand; import eu.europeana.cloud.client.uis.rest.console.commands.HelpCommand; import eu.europeana.cloud.client.uis.rest.console.commands.RemoveMappingByLocalIdCommand; import eu.europeana.cloud.client.uis.rest.console.commands.tests.TestCreateMappingIdManyProvidersCommand; import eu.europeana.cloud.client.uis.rest.console.commands.tests.TestCreateMappingIdOneProviderCommand; import eu.europeana.cloud.client.uis.rest.console.commands.tests.TestDeleteCommand; import eu.europeana.cloud.client.uis.rest.console.commands.tests.TestReadManyProvidersCommand; import eu.europeana.cloud.client.uis.rest.console.commands.tests.TestReadOneProviderCommand; import eu.europeana.cloud.client.uis.rest.console.commands.tests.TestReadWriteManyProvidersCommand; import eu.europeana.cloud.client.uis.rest.console.commands.tests.TestReadWriteManyProvidersWithIdCommand; import eu.europeana.cloud.client.uis.rest.console.commands.tests.TestReadWriteOneProviderCommand; import eu.europeana.cloud.client.uis.rest.console.commands.tests.TestReadWriteOneProviderWithIdCommand; import eu.europeana.cloud.client.uis.rest.console.commands.tests.TestRetrieveCloudIdCommand; import eu.europeana.cloud.client.uis.rest.console.commands.tests.TestRetrieveCloudIdNoPaginationCommand; import eu.europeana.cloud.client.uis.rest.console.commands.tests.TestRetrieveCloudIdWithPaginationCommand; import eu.europeana.cloud.client.uis.rest.console.commands.tests.TestRetrieveLocalIdNoPaginationCommand; import eu.europeana.cloud.client.uis.rest.console.commands.tests.TestRetrieveLocalIdWithPaginationCommand; /** * Command line application that uses the REST API Client * * @author Yorgos.Mamakis@ kb.nl * */ public class App implements Runnable { private String[] input; private int id; @Override public void run() { UISClient client = new UISClient(); Map<String, Command> commands = populateCommands(); boolean supported = true; if (!commands.containsKey(input[0])) { System.out.println("Operation is not supported"); supported = false; } if (supported) { try { commands.get(input[0]).execute(client, id, input.length > 1 ? subArray(input) : new String[0]); } catch (InvalidAttributesException e) { System.out.println("Wrong number of arguments provided"); } } } private static Map<String, Command> populateCommands() { Map<String,Command> a = new HashMap<>(); a.put("createCloudId", new CreateCloudIdCommand()); a.put("createMapping", new CreateMappingCommand()); a.put("deleteCloudId", new DeleteCloudIdCommand()); a.put("getCloudId", new GetCloudIdCommand()); a.put("getCloudIdsByProvider", new GetCloudIdsByProviderCommand()); a.put("getCloudIdsByProviderWithPagination", new GetCloudIdsByProviderWithPaginationCommand()); a.put("getRecordIdsByProvider", new GetRecordIdsByProviderCommand()); a.put("getRecordIdsByProviderWithPagination", new GetRecordIdsByProviderWithPaginationCommand()); a.put("getRecordIds", new GetRecordIdsCommand()); a.put("createBatchCloudId", new CreateCloudIdBatchCommand()); a.put("createBatchCloudWithGeneration", new CreateCloudIdBatchWithGenerationCommand()); a.put("removeMappingByLocalId", new RemoveMappingByLocalIdCommand()); a.put("testOneProviderRW", new TestReadWriteOneProviderCommand()); a.put("testManyProvidersRW", new TestReadWriteManyProvidersCommand()); a.put("testManyProvidersWithIdRW", new TestReadWriteManyProvidersWithIdCommand()); a.put("testOneProviderWithIdRW", new TestReadWriteOneProviderWithIdCommand()); a.put("testOneProviderWrite", new TestCreateMappingIdOneProviderCommand()); a.put("testManyProvidersWrite", new TestCreateMappingIdManyProvidersCommand()); a.put("testReadOneProvider", new TestReadOneProviderCommand()); a.put("testReadManyProviders", new TestReadManyProvidersCommand()); a.put("testRetrieveIdsByCloudId", new TestRetrieveCloudIdCommand()); a.put("testRetrieveCloudIdByProvider", new TestRetrieveCloudIdNoPaginationCommand()); a.put("testRetrieveCloudIdByProviderWithPagination", new TestRetrieveCloudIdWithPaginationCommand()); a.put("testRetrieveLocalIdByProvider", new TestRetrieveLocalIdNoPaginationCommand()); a.put("testRetrieveLocalIdByProviderWithPagination", new TestRetrieveLocalIdWithPaginationCommand()); a.put("testDeleteCloudId", new TestDeleteCommand()); a.put("help", new HelpCommand()); a.put("?", new HelpCommand()); return a; } private static String[] subArray(String[] input) throws InvalidAttributesException { String[] ret = new String[input.length - 1]; System.arraycopy(input, 1, ret, 0, ret.length); return ret; } /** * Inject command line parameters * * @param input */ public void setInput(String[] input) { this.input = input.clone(); } /** * Set the thread id * * @param id */ public void setId(int id) { this.id = id; } }