Resource.java

  1. /*
  2.  * @copyright defined in LICENSE.txt
  3.  */

  4. package ship.build;

  5. import static hera.util.FilepathUtils.append;
  6. import static java.util.Collections.EMPTY_LIST;
  7. import static java.util.Optional.of;
  8. import static org.slf4j.LoggerFactory.getLogger;

  9. import hera.util.Adaptor;
  10. import java.nio.file.Path;
  11. import java.nio.file.Paths;
  12. import java.util.List;
  13. import java.util.Optional;
  14. import lombok.Getter;
  15. import lombok.RequiredArgsConstructor;
  16. import org.slf4j.Logger;
  17. import ship.build.res.Project;

  18. @RequiredArgsConstructor
  19. public class Resource implements Adaptor {

  20.   protected final transient Logger logger = getLogger(getClass());

  21.   @Getter
  22.   protected final Project project;

  23.   @Getter
  24.   protected final String location;

  25.   public List<Resource> getDependencies(final ResourceManager resourceManager) throws Exception {
  26.     return EMPTY_LIST;
  27.   }

  28.   public Path getPath() {
  29.     final String path = append(project.getLocation(), location);
  30.     return Paths.get(path);
  31.   }

  32.   @Override
  33.   public <T> Optional<T> adapt(final Class<T> adaptor) {
  34.     if (adaptor.isInstance(this)) {
  35.       return (Optional<T>) of(this);
  36.     }
  37.     return Optional.empty();
  38.   }

  39.   @Override
  40.   public String toString() {
  41.     return getClass().getSimpleName() + "@" + location + "(" + project.getLocation() + ")";
  42.   }
  43. }