Exemplo n.º 1
0
 @Override
 public Boolean isSupported(final ArchiveFactory factory, final boolean allowDeepInspection) {
   if (splitType.matches(factory.getFilePath())) {
     if (factory instanceof DownloadLinkArchiveFactory) {
       for (final DownloadLink link : ((DownloadLinkArchiveFactory) factory).getDownloadLinks()) {
         final ExtensionsFilterInterface hint =
             CompiledFiletypeFilter.getExtensionsFilterInterface(link.getMimeHint());
         if (hint != null
             && !hint.isSameExtensionGroup(CompiledFiletypeFilter.ArchiveExtensions.NUM)) {
           return false;
         }
       }
     } else if (factory instanceof CrawledLinkFactory) {
       for (final CrawledLink link : ((CrawledLinkFactory) factory).getLinks()) {
         final DownloadLink dlLink = link.getDownloadLink();
         if (dlLink != null) {
           final ExtensionsFilterInterface hint =
               CompiledFiletypeFilter.getExtensionsFilterInterface(dlLink.getMimeHint());
           if (hint != null
               && !hint.isSameExtensionGroup(CompiledFiletypeFilter.ArchiveExtensions.NUM)) {
             return false;
           }
         }
       }
     }
     if (allowDeepInspection) {
       try {
         return SplitType.createArchive(factory, splitType, allowDeepInspection) != null;
       } catch (ArchiveException e) {
         getLogger().log(e);
       }
     } else {
       return true;
     }
   }
   return false;
 }
Exemplo n.º 2
0
  public static LinkInfo getLinkInfo(AbstractPackageChildrenNode abstractChildrenNode) {
    if (abstractChildrenNode != null) {
      final String fileName;
      if (abstractChildrenNode instanceof DownloadLink) {
        fileName = ((DownloadLink) abstractChildrenNode).getView().getDisplayName();
      } else {
        fileName = abstractChildrenNode.getName();
      }
      final String fileNameExtension = Files.getExtension(fileName);
      int num = -1;
      try {
        String partID = new Regex(fileName, "\\.r(\\d+)$").getMatch(0);
        if (partID == null) {
          partID = new Regex(fileName, "\\.pa?r?t?\\.?(\\d+).*?\\.rar$").getMatch(0);
        }
        if (partID != null) {
          num = Integer.parseInt(partID);
        }
      } catch (Throwable e) {
        e.printStackTrace();
      }
      final String ID = fileNameExtension + "_" + num;
      synchronized (CACHE) {
        LinkInfo ret = null;
        WeakReference<LinkInfo> linkInfo = CACHE.get(ID);
        if (linkInfo == null || (ret = linkInfo.get()) == null) {
          ExtensionsFilterInterface extension =
              CompiledFiletypeFilter.getExtensionsFilterInterface(fileNameExtension);
          if (extension == null) {
            extension =
                new ExtensionsFilterInterface() {

                  @Override
                  public Pattern compiledAllPattern() {
                    return null;
                  }

                  @Override
                  public String getDesc() {
                    return fileNameExtension;
                  }

                  @Override
                  public String getIconID() {
                    return null;
                  }

                  @Override
                  public Pattern getPattern() {
                    return null;
                  }

                  @Override
                  public String name() {
                    return fileNameExtension;
                  }

                  @Override
                  public boolean isSameExtensionGroup(ExtensionsFilterInterface extension) {
                    return extension != null
                        && extension.getPattern() == null
                        && extension.getIconID() == null
                        && StringUtils.equals(extension.name(), name());
                  }
                };
          }
          ret = new LinkInfo(num, extension, getIcon(fileName, extension));
          CACHE.put(ID, new WeakReference<LinkInfo>(ret));
        }
        return ret;
      }
    }
    return null;
  }