Skip to content

Commit

Permalink
Added truncate-notifications with commandline input parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
PaulBoon committed Aug 27, 2024
1 parent 6fcbed2 commit 2e7d21c
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/main/java/nl/knaw/dans/dvcli/DdDataverseCli.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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");
}
}
48 changes: 48 additions & 0 deletions src/main/java/nl/knaw/dans/dvcli/command/NotificationTruncate.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
* Copyright (C) 2024 DANS - Data Archiving and Networked Services ([email protected])
*
* 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 <uid>|--all-users } <number-of-records-to-keep>

@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.");
}
}

0 comments on commit 2e7d21c

Please sign in to comment.