public static Collection<IMedia> findReferencedMedia()
      throws MapperException, XPathExpressionException, SQLException {
    Set<IMedia> referenced = new HashSet<IMedia>();

    //		// TODO: obviously maintaining this list is not the way to go
    //		// I would like to have it so the structure clearly differentiates between an ID declaration
    // and
    //		// a reference to an object's id
    //		// something along the lines of <Snu><mainMedia><refId>1</refId></mainMedia></Snu>
    for (String ELEMENT : MapperHelper.REFERENCING_ELEMENTS) {
      NodeList elements = DataRegistry.getDocument().getElementsByTagName(ELEMENT);
      int length = elements.getLength();
      for (int i = 0; i < length; ++i) {
        Element element = (Element) elements.item(i);
        long refId = Long.parseLong(element.getTextContent());
        try {
          IResource resource = ResourceInputMapper.map(refId);
          if (resource instanceof IMedia) referenced.add((IMedia) resource);
        } catch (DomainObjectNotFoundException e) {
          e = null;
        }
      }
    }
    return referenced;
  }
 public static <M extends IMedia> M map(long id, Class<M> clazz) throws MapperException {
   IResource resource = ResourceInputMapper.map(id);
   if (!clazz.isAssignableFrom(resource.getClass()))
     throw new MapperException(
         "expected: "
             + clazz.getCanonicalName()
             + " but found: "
             + resource.getClass().getCanonicalName());
   return clazz.cast(resource);
 }
 public static IMedia map(long id) throws MapperException {
   IResource resource = ResourceInputMapper.map(id);
   return (IMedia) resource;
 }