Simple database: Difference between revisions
Content added Content deleted
m (→{{header|Rebol}}: Changed "Rebol" to "REBOL") |
(→{{header|Java}}: added Java) |
||
Line 2,041: | Line 2,041: | ||
'2012-02-08:23:45:06.539';'many more!' |
'2012-02-08:23:45:06.539';'many more!' |
||
$ </lang> |
$ </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}}== |
=={{header|PicoLisp}}== |