Skip to content

Commit

Permalink
Merge pull request #65 from TAMULib/finer_transactions_in_cli
Browse files Browse the repository at this point in the history
Relocate "generate" CLI code outside of transaction and improve error handling.
  • Loading branch information
kaladay authored Apr 23, 2024
2 parents 8222da3 + c4babe5 commit b64453a
Show file tree
Hide file tree
Showing 2 changed files with 209 additions and 190 deletions.
171 changes: 98 additions & 73 deletions src/main/java/org/tdl/vireo/cli/Cli.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.tdl.vireo.model.User;
import org.tdl.vireo.service.CliService;

/**
Expand All @@ -23,7 +25,7 @@
@Order(value = Ordered.LOWEST_PRECEDENCE)
@Component
public class Cli implements CommandLineRunner {

@Autowired
CliService cliService;

Expand All @@ -40,106 +42,129 @@ public void run(String... args) throws Exception {
Boolean running = runConsole ? true : false;

if (running) {
final Scanner reader = new Scanner(System.in); // Reading from System.in
final String PROMPT = "\n" + (char) 27 + "[36mvireo>" + (char) 27 + "[37m ";

Scanner reader = new Scanner(System.in); // Reading from System.in
boolean expansive = false;
int itemsGenerated = 0;

System.out.print(PROMPT);

while (running && reader.hasNextLine()) {
try {
String n = reader.nextLine();

String n = reader.nextLine();
n = n.trim();

n = n.trim();
String[] commandTokens = n.split("\\s+");
List<String> commandArgs = new ArrayList<String>();

String[] commandTokens = n.split("\\s+");
List<String> commandArgs = new ArrayList<String>();
String command = null;
int num1 = 0;
int num2 = 0;

String command = null;
int num1 = 0;
int num2 = 0;
if (commandTokens.length > 0)
command = commandTokens[0];
if (commandTokens.length > 1) {
for (int i = 1; i < commandTokens.length; i++) {
commandArgs.add(commandTokens[i]);
}

if (commandTokens.length > 0)
command = commandTokens[0];
if (commandTokens.length > 1) {
for (int i = 1; i < commandTokens.length; i++) {
commandArgs.add(commandTokens[i]);
}

}

switch (command) {
case "exit":
System.out.println("\nGoodbye.");
running = false;
break;

case "accounts":
num1 = 0;
if (commandArgs.size() > 0) {
try {
num1 = Integer.parseInt(commandArgs.get(0));
} catch (Exception e) {
System.err.println("unable to parse as a number of items: " + commandArgs.get(0));
switch (command) {
case "exit":
System.out.println("\nGoodbye.");
running = false;
break;

case "accounts":
num1 = 0;
if (commandArgs.size() > 0) {
try {
num1 = Integer.parseInt(commandArgs.get(0));
} catch (Exception e) {
System.err.println("unable to parse as a number of items: " + commandArgs.get(0));
}
}
}

cliService.operateAccounts(expansive, num1);
break;
cliService.operateAccounts(expansive, num1);
break;

case "admin_accounts":
num1 = 0;
if (commandArgs.size() > 0) {
try {
num1 = Integer.parseInt(commandArgs.get(0));
} catch (Exception e) {
System.err.println("unable to parse as a number of items: " + commandArgs.get(0));
case "admin_accounts":
num1 = 0;
if (commandArgs.size() > 0) {
try {
num1 = Integer.parseInt(commandArgs.get(0));
} catch (Exception e) {
System.err.println("unable to parse as a number of items: " + commandArgs.get(0));
}
}
}

cliService.operateAdminAccounts(expansive, num1);
break;

case "expansive":
expansive = !expansive;
System.out.println("\nSet expansive = " + (expansive ? "true" : "false") + ".");
break;

case "generate":
num1 = 0;
num2 = 100;
if (commandArgs.size() > 0) {
try {
// First argument is number of submissions.
num1 = Integer.parseInt(commandArgs.get(0));

// Second argument is maximum action logs.
if (commandArgs.size() > 1) {
num2 = Integer.parseInt(commandArgs.get(1));
cliService.operateAdminAccounts(expansive, num1);
break;

case "expansive":
expansive = !expansive;
System.out.println("\nSet expansive = " + (expansive ? "true" : "false") + ".");
break;

case "generate":
num1 = 0;
num2 = 100;
if (commandArgs.size() > 0) {
try {
// First argument is number of submissions.
num1 = Integer.parseInt(commandArgs.get(0));

// Second argument is maximum action logs.
if (commandArgs.size() > 1) {
num2 = Integer.parseInt(commandArgs.get(1));
}
} catch (Exception e) {
System.err.println("unable to parse as a number of items: " + commandArgs.get(0));
}
} catch (Exception e) {
System.err.println("unable to parse as a number of items: " + commandArgs.get(0));
}
}

cliService.operateGenerate(expansive, num1, num2, itemsGenerated);
break;
{
Random random = new Random();
int idOffset = cliService.countUsers();
User helpfulHarry = null;

case "":
break;
if (expansive) {
helpfulHarry = cliService.createHelpfulHarry(idOffset++, CliService.EMAIL_DATE);
}

default:
System.out.println("Unknown command " + n);
}
for (int i = itemsGenerated; i < num1 + itemsGenerated; i++) {
cliService.operateGenerate(expansive, num2, random, idOffset, helpfulHarry, i);
System.out.print("\r" + (i - itemsGenerated) + " of " + num1 + " generated...");
}

if (expansive) {
System.out.println("\rGenerated " + num1 + " submissions expansively with max action logs of " + num2 + ".");
} else {
System.out.println("\rGenerated " + num1 + " submissions.");
}

itemsGenerated += num1;
}

break;

if (running)
System.out.print(PROMPT);
case "":
break;

default:
System.out.println("Unknown command " + n);
}

if (running) System.out.print(PROMPT);

} catch (Exception e) {
e.printStackTrace();
}
}
reader.close();

reader.close();
}
}

Expand Down
Loading

0 comments on commit b64453a

Please sign in to comment.