From 2e7d21c4883ba79a2ff1f42cae10edd2f440a090 Mon Sep 17 00:00:00 2001 From: paulboon Date: Tue, 27 Aug 2024 13:35:00 +0200 Subject: [PATCH] Added truncate-notifications with commandline input parsing --- .../nl/knaw/dans/dvcli/DdDataverseCli.java | 4 +- .../dvcli/command/NotificationTruncate.java | 48 +++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/main/java/nl/knaw/dans/dvcli/command/NotificationTruncate.java diff --git a/src/main/java/nl/knaw/dans/dvcli/DdDataverseCli.java b/src/main/java/nl/knaw/dans/dvcli/DdDataverseCli.java index 0f54f1b..e22b89f 100644 --- a/src/main/java/nl/knaw/dans/dvcli/DdDataverseCli.java +++ b/src/main/java/nl/knaw/dans/dvcli/DdDataverseCli.java @@ -33,6 +33,7 @@ import nl.knaw.dans.dvcli.command.CollectionView; import nl.knaw.dans.dvcli.command.DatasetCmd; import nl.knaw.dans.dvcli.command.DeleteDraft; +import nl.knaw.dans.dvcli.command.NotificationTruncate; import nl.knaw.dans.dvcli.config.DdDataverseCliConfig; import nl.knaw.dans.lib.util.AbstractCommandLineApp; import nl.knaw.dans.lib.util.PicocliVersionProvider; @@ -73,7 +74,8 @@ public void configureCommandLine(CommandLine commandLine, DdDataverseCliConfig c .addSubcommand(new CollectionView())) .addSubcommand(new CommandLine(new DatasetCmd(dataverseClient)) .addSubcommand(new DeleteDraft()) - ); + ) + .addSubcommand(new CommandLine(new NotificationTruncate())); log.debug("Configuring command line"); } } diff --git a/src/main/java/nl/knaw/dans/dvcli/command/NotificationTruncate.java b/src/main/java/nl/knaw/dans/dvcli/command/NotificationTruncate.java new file mode 100644 index 0000000..0f395d3 --- /dev/null +++ b/src/main/java/nl/knaw/dans/dvcli/command/NotificationTruncate.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2024 DANS - Data Archiving and Networked Services (info@dans.knaw.nl) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package nl.knaw.dans.dvcli.command; + +import picocli.CommandLine; + +@CommandLine.Command(name = "truncate-notifications", + mixinStandardHelpOptions = true, + description = "Remove user notifications but keep up to a specified amount.") +public class NotificationTruncate extends AbstractCmd { + // dataverse truncate-notifications {--user |--all-users } + + @CommandLine.ArgGroup(exclusive = true, multiplicity = "1") + UserOptions users; + + static class UserOptions { + @CommandLine.Option(names = { "--user" }, required = true, description = "The user whose notifications to truncate.") + private String user; + @CommandLine.Option(names = { "--all-users" }, required = true, description = "Truncate notifications for all users.") + private boolean allUser; + } + + @CommandLine.Parameters(index = "0", paramLabel = "number-of-records-to-keep", description = "The number of notifications to keep.") + private int numberOfRecordsToKeep; + + @Override + public void doCall() { + // show commandline input + System.out.println("Truncating notifications..."); + System.out.println("Number of records to keep: " + numberOfRecordsToKeep); + System.out.println("User: " + (users.allUser ? "all users" : users.user)); + + throw new UnsupportedOperationException("Not yet implemented."); + } +}