DamSi

Untitled

Aug 17th, 2015
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.19 KB | None | 0 0
  1. class Subtitles {
  2.     private List<Subtitle> subtitles;
  3.  
  4.     public Subtitles() {
  5.         subtitles = new ArrayList<Subtitle>();
  6.     }
  7.  
  8.     @SuppressWarnings("resource")
  9.     public int loadSubtitles(InputStream inputStream) {
  10.         Scanner input = new Scanner(inputStream);
  11.         String line;
  12.         while (input.hasNextLine()) {
  13.             line = input.nextLine();
  14.             if (line.trim().length() == 0)
  15.                 break;
  16.             int number = Integer.parseInt(line);
  17.             String time = input.nextLine();
  18.             StringBuilder text = new StringBuilder();
  19.             while (input.hasNextLine()) {
  20.                 line = input.nextLine();
  21.                 if (line.trim().length() == 0) {
  22.                     break;
  23.                 }
  24.                 text.append(line);
  25.                 text.append("\n");
  26.             }
  27.             Subtitle sub = new Subtitle(number, time, text.toString());
  28.             subtitles.add(sub);
  29.  
  30.         }
  31.         return subtitles.size();
  32.  
  33.     }
  34.  
  35.     public void print() {
  36.         for (Subtitle e : subtitles) {
  37.             System.out.println(e);
  38.         }
  39.     }
  40.  
  41.     public void shift(int ms) {
  42.         for (Subtitle e : subtitles) {
  43.             e.shift(ms);
  44.         }
  45.     }
  46. }
  47.  
  48. class Subtitle {
  49.     private int number;
  50.     private int textFrom;
  51.     private int textTo;
  52.     private String text;
  53.  
  54.     public Subtitle(int num, String time, String text) {
  55.         this.number = num;
  56.         String[] parts = time.split(" --> ");
  57.         textFrom = fromStringToTime(parts[0]);
  58.         textTo = fromStringToTime(parts[1]);
  59.         this.text = text;
  60.  
  61.     }
  62.  
  63.     public int fromStringToTime(String time) {
  64.         String[] parts = time.split(":");
  65.         int hour = Integer.parseInt(parts[0]);
  66.         int min = Integer.parseInt(parts[1]);
  67.  
  68.         parts = parts[2].split(",");
  69.         int sec = Integer.parseInt(parts[0]);
  70.         int ms = Integer.parseInt(parts[1]);
  71.  
  72.         int result = ms + sec * 1000 + min * 60 * 1000 + hour * 60 * 60 * 1000;
  73.         return result;
  74.     }
  75.  
  76.     public void shift(int ms) {
  77.         textFrom += ms;
  78.         textTo += ms;
  79.     }
  80.  
  81.     public String timeToString(int time) {
  82.         int h = time / (60 * 60 * 1000);
  83.         time = time % (60 * 60 * 1000);
  84.         int m = time / (60 * 1000);
  85.         time = time % (60 * 1000);
  86.         int s = time / 1000;
  87.         int ms = time % 1000;
  88.         return String.format("%02d:%02d:%02d,%03d", h, m, s, ms);
  89.     }
  90.  
  91.     @Override
  92.     public String toString() {
  93.         return String.format("%d\n%s --> %s\n%s", number, timeToString(textFrom), timeToString(textTo), text);
  94.     }
  95.  
  96. }
Advertisement
Add Comment
Please, Sign In to add comment