Simple database: Difference between revisions

Content added Content deleted
m (→‎{{header|Rebol}}: Changed "Rebol" to "REBOL")
(→‎{{header|Java}}: added Java)
Line 2,041:
'2012-02-08:23:45:06.539';'many more!'
$ </lang>
 
=={{header|Java}}==
{{trans|D}}
{{works with|Java 7}}
<lang java>import java.io.*;
import java.text.*;
import java.util.*;
 
public class SimpleDatabase {
 
final static String filename = "simdb.csv";
 
public static void main(String[] args) throws ParseException {
if (args.length < 1 || args.length > 3) {
printUsage();
return;
}
 
switch (args[0].toLowerCase()) {
case "add":
addItem(args);
break;
case "latest":
printLatest(args);
break;
case "all":
printAll();
break;
default:
printUsage();
break;
}
}
 
private static class Item implements Comparable<Item>{
final String name;
final String date;
final String category;
 
Item(String n, String d, String c) {
name = n;
date = d;
category = c;
}
 
@Override
public int compareTo(Item item){
return item.date.compareTo(date);
}
 
@Override
public String toString() {
return String.format("%s,%s,%s%n", name, date, category);
}
}
 
private static void addItem(String[] input) {
if (input.length < 2) {
printUsage();
return;
}
List<Item> db = load();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sdf.format(new Date());
String cat = (input.length == 3) ? input[2] : "none";
db.add(new Item(input[1], date, cat));
store(db);
}
 
private static void printLatest(String[] a) {
List<Item> db = load();
if (db.isEmpty()) {
System.out.println("No entries in database.");
return;
}
Collections.sort(db);
if (a.length == 2) {
for (Item item : db)
if (item.category.equals(a[1]))
System.out.println(item);
} else {
System.out.println(db.get(0));
}
}
 
private static void printAll() {
List<Item> db = load();
if (db.isEmpty()) {
System.out.println("No entries in database.");
return;
}
Collections.sort(db);
for (Item item : db)
System.out.println(item);
}
 
private static List<Item> load() {
List<Item> db = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
String line;
while ((line = br.readLine()) != null) {
String[] item = line.split(",");
db.add(new Item(item[0], item[1], item[2]));
}
} catch (IOException e) {
System.out.println(e);
}
return db;
}
 
private static void store(List<Item> db) {
try (FileWriter fw = new FileWriter(filename)) {
for (Item item : db)
fw.write(item.toString());
} catch (IOException e) {
System.out.println(e);
}
}
 
private static void printUsage() {
System.out.println("Usage:");
System.out.println(" simdb cmd [categoryName]");
System.out.println(" add add item, followed by optional category");
System.out.println(" latest print last added item(s), followed by "
+ "optional category");
System.out.println(" all print all");
System.out.println(" For instance: add \"some item name\" "
+ "\"some category name\"");
}
}</lang>
 
Output:
 
<pre>
C:\temp>java -jar SimpleDatabase.jar add item1
 
C:\temp>java -jar SimpleDatabase.jar add item2
 
C:\temp>java -jar SimpleDatabase.jar add item3 cat3
 
C:\temp>java -jar SimpleDatabase.jar add item4 cat3
 
C:\temp>java -jar SimpleDatabase.jar add item5 cat3
 
C:\temp>java -jar SimpleDatabase.jar latest
item1,2014-06-03 19:30:05,none
 
C:\temp>java -jar SimpleDatabase.jar latest cat3
item5,2014-06-03 19:30:23,cat3
 
item4,2014-06-03 19:30:20,cat3
 
item3,2014-06-03 19:30:14,cat3
 
C:\temp>java -jar SimpleDatabase.jar all
item5,2014-06-03 19:30:23,cat3
 
item4,2014-06-03 19:30:20,cat3
 
item3,2014-06-03 19:30:14,cat3
 
item2,2014-06-03 19:30:08,none
 
item1,2014-06-03 19:30:05,none</pre>
 
=={{header|PicoLisp}}==