Resource.java

/*
 * @copyright defined in LICENSE.txt
 */

package ship.build;

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

import hera.util.Adaptor;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Optional;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import ship.build.res.Project;

@RequiredArgsConstructor
public class Resource implements Adaptor {

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

  @Getter
  protected final Project project;

  @Getter
  protected final String location;

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

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

  @Override
  public <T> Optional<T> adapt(final Class<T> adaptor) {
    if (adaptor.isInstance(this)) {
      return (Optional<T>) of(this);
    }
    return Optional.empty();
  }

  @Override
  public String toString() {
    return getClass().getSimpleName() + "@" + location + "(" + project.getLocation() + ")";
  }
}