package app; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.kohsuke.args4j.Argument; import org.kohsuke.args4j.CmdLineException; import org.kohsuke.args4j.CmdLineParser; import org.kohsuke.args4j.ExampleMode; import org.kohsuke.args4j.Option; import api.*; public class Cmd { ManageDrive driveManagement; private ArrayList<IntDrive> drives; @Option(name = "--listdrive",usage="List all drives connected.") private Boolean listDrives = false; @Option(name = "--add",usage="add a drive. <dropbox,skydrive,googledrive>",metaVar="<type>") private String addDrive; @Option(name = "--download",usage="Download a file.") private Boolean download = false; @Argument private List<String> targets; public void run(String[] args){ CmdLineParser parser = new CmdLineParser(this); try { parser.parseArgument(args); } catch (CmdLineException e) { System.err.println(e.getMessage()); parser.printUsage(System.err); parser.printExample(ExampleMode.ALL); return; } driveManagement = new ManageDrive(); if(listDrives){ drives = driveManagement.loadDrives("test.json"); list(); } if(addDrive != null){ drives = driveManagement.loadDrives("test.json"); add(); } if(targets != null && targets.size() == 2 && !download){ drives = driveManagement.loadDrives("test.json"); ls(Integer.parseInt(targets.get(0)), targets.get(1)); } if(targets != null && targets.size() == 2 && download){ drives = driveManagement.loadDrives("test.json"); dl(Integer.parseInt(targets.get(0)), targets.get(1),"./test"); } System.exit(0); } public void add(){ switch (addDrive) { case "dropbox": DriveDropBox addDrobox = new DriveDropBox(); System.out.println(addDrobox.authUrl); try { while (System.in.read() != '\n'); } catch (IOException ex) { } if(addDrobox.validateToken()){ System.out.println("Dropbox Successful Added"); }; drives.add(addDrobox); driveManagement.currentconf.save(drives); break; default: System.err.println("Api "+addDrive+" isn't implemented yet !"); break; } } public void ls(int selectedDrive,String path){ ArrayList<Entry> rootEntries = drives.get(selectedDrive).getEntries(path); Iterator<Entry> itFiles = rootEntries.iterator(); while(itFiles.hasNext()){ Entry file = itFiles.next(); System.out.println(file.getName()); } } public void dl(int selectedDrive,String path, String where){ ArrayList<Entry> rootEntries = drives.get(selectedDrive).getEntries(path); Iterator<Entry> itFiles = rootEntries.iterator(); while(itFiles.hasNext()){ Entry file = itFiles.next(); file.download(where + File.separator +file.getName()); } } public void list(){ Iterator<IntDrive> itDrive = drives.iterator(); int i = 0; while (itDrive.hasNext()) { IntDrive intDrive = (IntDrive) itDrive.next(); System.out.println( i++ +" "+intDrive.toString()); } } /** * @param args */ public static void main(String[] args) { new Cmd().run(args); } }