Package tvbrowserdataservice.file

Examples of tvbrowserdataservice.file.ProgramFrame


      PrintWriter writer = new PrintWriter(stream);
     
      writer.print("Version: ");
      writer.println(prog.getVersion());
      for (int frameIdx = 0; frameIdx < prog.getProgramFrameCount(); frameIdx++) {
        ProgramFrame frame = prog.getProgramFrameAt(frameIdx);
        writer.println();
        writer.print("Program ID: ");
        writer.println(frame.getId());
        for (int fieldIdx = 0; fieldIdx < frame.getProgramFieldCount(); fieldIdx++) {
          ProgramField field = frame.getProgramFieldAt(fieldIdx);
          ProgramFieldType type = field.getType();
          writer.print("  ");
          writer.print(type.getName());
          writer.print(": ");
         
View Full Code Here


    String country, String channel)
    throws PreparationException
  {
    // Go through the program frames and pepare them
    for (int frameIdx = 0; frameIdx < prog.getProgramFrameCount(); frameIdx++) {
      ProgramFrame frame = prog.getProgramFrameAt(frameIdx);

      // Trim text fields and remove all empty fields from the day program
      for (int fieldIdx = frame.getProgramFieldCount() - 1; fieldIdx >= 0; fieldIdx--) {
        ProgramField field = frame.getProgramFieldAt(fieldIdx);

        // Trim text fields
        if (field.getType().getFormat() == ProgramFieldType.TEXT_FORMAT) {
          String oldText = field.getTextData();
          if (oldText != null) {
            String newText = oldText.trim();
            if (oldText.length() != newText.length()) {
              field.setTextData(newText);
            }
          }
        }

        // Remove empty fields
        byte[] data = field.getBinaryData();
        if ((data == null) || (data.length == 0)) {
          frame.removeProgramFieldAt(fieldIdx);
        }
      }

      // Check the mandatory fields (start time and title)
      ProgramField startTimeField = frame.getProgramFieldOfType(ProgramFieldType.START_TIME_TYPE);
      if (startTimeField == null) {
        throw new PreparationException("Program frame has no start time. "
          + "ID: " + frame.getId() + ", Day program: " + date + ", " + country + ", " + channel);
      }
      ProgramField titleField = frame.getProgramFieldOfType(ProgramFieldType.TITLE_TYPE);
      if (titleField == null) {
        frame.addProgramField(ProgramField.create(ProgramFieldType.TITLE_TYPE, "[Unknown title]"));
        System.out.println("Program frame has no title. "
          + "ID: " + frame.getId() + ", Day program: " + date + ", " + country + ", " + channel);
      }

      // Try to create a short description
      ProgramField shortDescField = frame.getProgramFieldOfType(ProgramFieldType.SHORT_DESCRIPTION_TYPE);
      if (shortDescField == null) {
        ProgramField descField = frame.getProgramFieldOfType(ProgramFieldType.DESCRIPTION_TYPE);
        if (descField != null) {
          // Generate a short description from the description
          String shortDesc = descField.getTextData();
          if (shortDesc.length() > MutableProgram.MAX_SHORT_INFO_LENGTH) {
            int lastSpacePos = shortDesc.lastIndexOf(' ', MutableProgram.MAX_SHORT_INFO_LENGTH);
            if (lastSpacePos == -1) {
              shortDesc = shortDesc.substring(0, MutableProgram.MAX_SHORT_INFO_LENGTH);
            } else {
              shortDesc = shortDesc.substring(0, lastSpacePos);
            }
          }

          // Add the short description to the frame
          shortDescField = ProgramField.create(ProgramFieldType.SHORT_DESCRIPTION_TYPE, shortDesc);
          frame.addProgramField(shortDescField);
        }
      }
    }
  }
View Full Code Here

        }
      }

      int nextId = maxId + 1;
      for (int i = 0; i < rawProg.getProgramFrameCount(); i++) {
        ProgramFrame frame = rawProg.getProgramFrameAt(i);
        if (frame.getId() == -1) {
          frame.setId(nextId++);
        }
      }
    }
  }
View Full Code Here

    throws PreparationException
  {
    DayProgramFile levelProg = new DayProgramFile();

    for (int i = 0; i < prog.getProgramFrameCount(); i++) {
      ProgramFrame frame = prog.getProgramFrameAt(i);
      ProgramFrame levelFrame = null;

      if (levelIdx == 0) {
        // base: All information but description and the image
        levelFrame = (ProgramFrame) frame.clone();
        levelFrame.removeProgramFieldOfType(ProgramFieldType.DESCRIPTION_TYPE);
        levelFrame.removeProgramFieldOfType(ProgramFieldType.ACTOR_LIST_TYPE);
        levelFrame.removeProgramFieldOfType(ProgramFieldType.ADDITIONAL_INFORMATION_TYPE);
       // levelFrame.removeProgramFieldOfType(ProgramFieldType.IMAGE_TYPE);
        levelFrame.removeProgramFieldOfType(ProgramFieldType.PICTURE_TYPE);
        levelFrame.removeProgramFieldOfType(ProgramFieldType.PICTURE_DESCRIPTION_TYPE);
        levelFrame.removeProgramFieldOfType(ProgramFieldType.PICTURE_COPYRIGHT_TYPE);

      } else {
        ProgramField levelField1 = null;
        ProgramField levelField2 = null;
        ProgramField levelField3 = null;

        switch (levelIdx) {
          case 1:
            // more00-16: Only the descriptions and the actor list
            //            between midnight and 16 pm
            if (PrimaryDataUtilities.getProgramStartTime(frame) < (16 * 60)) {
              levelField1 = frame.getProgramFieldOfType(ProgramFieldType.DESCRIPTION_TYPE);
              levelField2 = frame.getProgramFieldOfType(ProgramFieldType.ACTOR_LIST_TYPE);
              levelField3 = frame.getProgramFieldOfType(ProgramFieldType.ADDITIONAL_INFORMATION_TYPE);
            }
            break;
          case 2:
            // more16-00: Only the descriptions and the actor list
            //            between 16 pm and midnight
            if (PrimaryDataUtilities.getProgramStartTime(frame) >= (16 * 60)) {
              levelField1 = frame.getProgramFieldOfType(ProgramFieldType.DESCRIPTION_TYPE);
              levelField2 = frame.getProgramFieldOfType(ProgramFieldType.ACTOR_LIST_TYPE);
              levelField3 = frame.getProgramFieldOfType(ProgramFieldType.ADDITIONAL_INFORMATION_TYPE);
            }
            break;
         /* case 3:
            // image00-16: Only the image between midnight and 16 pm
            if (PrimaryDataUtilities.getProgramStartTime(frame) < (16 * 60)) {
              levelField1 = frame.getProgramFieldOfType(ProgramFieldType.IMAGE_TYPE);
            }
            break;
          case 4:
            // image16-00: Only the image between 16 pm and midnight
            if (PrimaryDataUtilities.getProgramStartTime(frame) >= (16 * 60)) {
              levelField1 = frame.getProgramFieldOfType(ProgramFieldType.IMAGE_TYPE);
            }
            break;*/

          case 3:
            // picture00-16: Only the picture between midnight and 16 pm
            if (PrimaryDataUtilities.getProgramStartTime(frame) < (16 * 60)) {
              levelField1 = frame.getProgramFieldOfType(ProgramFieldType.PICTURE_TYPE);
              levelField2 = frame.getProgramFieldOfType(ProgramFieldType.PICTURE_DESCRIPTION_TYPE);
              levelField3 = frame.getProgramFieldOfType(ProgramFieldType.PICTURE_COPYRIGHT_TYPE);
            }
            break;

          case 4:
            // picture16-00: Only the picture between 16 pm and midnight
            if (PrimaryDataUtilities.getProgramStartTime(frame) >= (16 * 60)) {
              levelField1 = frame.getProgramFieldOfType(ProgramFieldType.PICTURE_TYPE);
              levelField2 = frame.getProgramFieldOfType(ProgramFieldType.PICTURE_DESCRIPTION_TYPE);
              levelField3 = frame.getProgramFieldOfType(ProgramFieldType.PICTURE_COPYRIGHT_TYPE);
            }
            break;


        }

        if ((levelField1 != null) || (levelField2 != null) || (levelField3 != null)) {
          levelFrame = new ProgramFrame(frame.getId());
          if (levelField1 != null) {
            levelFrame.addProgramField(levelField1);
          }
          if (levelField2 != null) {
            levelFrame.addProgramField(levelField2);
          }
          if (levelField3 != null) {
            levelFrame.addProgramField(levelField3);
          }
        }
      }

      if (levelFrame != null) {
View Full Code Here

      // Check whether this frame has an counterpart in the new file
      int newIdx = newCompleteFile.getProgramFrameIndexForId(id);
      if (newIdx == -1) {
        // It has not -> Add an empty frame with this ID as a order for deletion
        ProgramFrame frame = new ProgramFrame(id);
        updateFile.addProgramFrame(frame);
      }
    }

    // Determine the programs that should be inserted or updated
    for (int newIdx = 0; newIdx < newCompleteFile.getProgramFrameCount(); newIdx++) {
      ProgramFrame newFrame = newCompleteFile.getProgramFrameAt(newIdx);

      // Check whether there is a counterpart in the last file
      int lastIdx = lastCompleteFile.getProgramFrameIndexForId(newFrame.getId());
      if (lastIdx == -1) {
        // There is no counterpart -> this is an insert
        ProgramFrame insertFrame = (ProgramFrame) newFrame.clone();
        updateFile.addProgramFrame(insertFrame);
      } else {
        // There is a counterpart -> this is an update
        // -> Determine the changed fields and add them
        ProgramFrame lastFrame = lastCompleteFile.getProgramFrameAt(lastIdx);
        ProgramFrame updateFrame = createUpdateFrame(lastFrame, newFrame);

        if (updateFrame != null) {
          updateFile.addProgramFrame(updateFrame);
        }
      }
View Full Code Here


  private ProgramFrame createUpdateFrame(ProgramFrame lastFrame,
    ProgramFrame newFrame)
  {
    ProgramFrame updateFrame = null;

    // Determine the fields that should be deleted
    for (int lastIdx = 0; lastIdx < lastFrame.getProgramFieldCount(); lastIdx++) {
      ProgramField lastField = lastFrame.getProgramFieldAt(lastIdx);

      // Check whether this field has an counterpart in the new frame
      int newIdx = newFrame.getProgramFieldIndexForTypeId(lastField.getTypeId());
      if (newIdx == -1) {
        // It has not -> Add an empty field with this type ID as a order for
        // deletion
        ProgramField updateField = (ProgramField) lastField.clone();
        updateField.removeData();

        if (updateFrame == null) {
          updateFrame = new ProgramFrame(newFrame.getId());
        }
        updateFrame.addProgramField(updateField);
      }
    }

    // Determine the programs that should be inserted or updated
    for (int newIdx = 0; newIdx < newFrame.getProgramFieldCount(); newIdx++) {
      ProgramField newField = newFrame.getProgramFieldAt(newIdx);

      // Check whether there is a counterpart in the last file and whether it
      // has changed
      int lastIdx = lastFrame.getProgramFieldIndexForTypeId(newField.getTypeId());

      boolean hasChanged;
      if (lastIdx == -1) {
        // There is no counterpart -> It has changed
        hasChanged = true;
      } else {
        // There is a counterpart -> Check whether the content changed
        ProgramField lastField = lastFrame.getProgramFieldAt(lastIdx);

        hasChanged = ! newField.equals(lastField);
      }

      // Add the field if it has changed
      if (hasChanged) {
        ProgramField field = (ProgramField) newField.clone();

        if (updateFrame == null) {
          updateFrame = new ProgramFrame(newFrame.getId());
        }
        updateFrame.addProgramField(field);
      }
    }

    return updateFrame;
  }
View Full Code Here

    Iterator<DayProgramFile> it = getDayProgramFiles();
    while (it.hasNext()) {
      DayProgramFile f=it.next();
      int cnt=f.getProgramFrameCount();
      for (int i=0;i<cnt;i++) {
        ProgramFrame frame=f.getProgramFrameAt(i);
        frame.setId(i);
        //dumpFrame(frame);
      }
     
     
      f.writeToFile(new File(directory,f.getProgramFileName()));
View Full Code Here

 
 
  private ArrayList<ProgramFrame> createUnmappedList(DayProgramFile file) {
    ArrayList<ProgramFrame> unmappedList = new ArrayList<ProgramFrame>();
    for (int i = 0; i < file.getProgramFrameCount(); i++) {
      ProgramFrame frame = file.getProgramFrameAt(i);
      if (frame.getId() == -1) {
        unmappedList.add(frame);
      }
    }
    return unmappedList;
  }
View Full Code Here



  private void mapExactMatches(DayProgramFile rawFile, ArrayList<ProgramFrame> progList) throws PreparationException {
    for (int frameNr = 0; frameNr < rawFile.getProgramFrameCount(); frameNr++) {
      ProgramFrame rawFrame = rawFile.getProgramFrameAt(frameNr);
      int rawStarttime = PrimaryDataUtilities.getProgramStartTime(rawFrame);
      String rawTitle = PrimaryDataUtilities.getProgramTitle(rawFrame);
     
      for (int i = 0; i < progList.size(); i++) {
        ProgramFrame prepFrame = progList.get(i);
        int prepStarttime = PrimaryDataUtilities.getProgramStartTime(prepFrame);
        String prepTitle = PrimaryDataUtilities.getProgramTitle(prepFrame);
       
        if ((rawStarttime == prepStarttime) && rawTitle.equals(prepTitle)) {
          // This is a match -> map the program
          rawFrame.setId(prepFrame.getId());
          progList.remove(i);
          break;
        }
      }
    }
View Full Code Here

   
    // Compare each raw program with each prepared program and build a
    // similarity matrix
    double[][] similarity = new double[progList.size()][unmappedList.size()];
    for (int i = 0; i < progList.size(); i++) {
      ProgramFrame prepFrame = progList.get(i);
      for (int j = 0; j < unmappedList.size(); j++) {
        ProgramFrame rawFrame = unmappedList.get(j);
        similarity[i][j] = getSimilarity(prepFrame, rawFrame);
      }
    }
   
    // Use the similarity matrix to map all programs that are similar
    double maxSimilarity;
    do {
      // Find the programs that have the maximum similarity
      maxSimilarity = 0;
      int maxI = 0;
      int maxJ = 0;
     
      for (int i = 0; i < progList.size(); i++) {
        for (int j = 0; j < unmappedList.size(); j++) {
          if (similarity[i][j] > maxSimilarity) {
            // We have a new maximum
            maxSimilarity = similarity[i][j];
            maxI = i;
            maxJ = j;
          }
        }
      }
     
      // map the programs
      if (maxSimilarity > 0) {
        ProgramFrame prepFrame = progList.get(maxI);
        ProgramFrame rawFrame = unmappedList.get(maxJ);
        rawFrame.setId(prepFrame.getId());
       
        // Set the similarities of these programs to 0 to avoid a second match
        for (int i = 0; i < progList.size(); i++) {
          similarity[i][maxJ] = 0;
        }
View Full Code Here

TOP

Related Classes of tvbrowserdataservice.file.ProgramFrame

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.