wkdhkr/dedupper

View on GitHub
src/services/judgment/ReasonLogic.js

Summary

Maintainability
A
3 hrs
Test Coverage
// @flow
import typeof { Logger } from "log4js";

import AttributeService from "../fs/AttributeService";
import ContentsLogic from "./ContentsLogic";

import {
  // TYPE_NO_PROBLEM,
  TYPE_HASH_MATCH_RECOVERY,
  TYPE_FILE_NAME_MATCH,
  TYPE_SWEEP_DEDUPPER_FILE,
  TYPE_NG_FILE_NAME,
  TYPE_NG_DIR_PATH,
  TYPE_HASH_MATCH,
  TYPE_ARCHIVE_EXTRACT,
  TYPE_SCRAP_FILE_TYPE,
  TYPE_LOW_FILE_SIZE,
  TYPE_LOW_RESOLUTION,
  TYPE_LOW_LONG_SIDE,
  TYPE_DAMAGED,
  TYPE_P_HASH_REJECT_LOW_FILE_SIZE,
  TYPE_P_HASH_REJECT_LOW_RESOLUTION,
  TYPE_P_HASH_REJECT_NEWER,
  TYPE_FILE_MARK_BLOCK,
  TYPE_FILE_MARK_ERASE,
  TYPE_FILE_MARK_DEDUPE,
  TYPE_DEEP_LEARNING
} from "../../types/ReasonTypes";

import type { ReasonType } from "../../types/ReasonTypes";
import type { Config } from "../../types";

export default class ReasonLogicService {
  log: Logger;

  config: Config;

  cl: ContentsLogic;

  as: AttributeService;

  constructor(config: Config) {
    this.log = config.getLogger(this);
    this.config = config;
    this.cl = new ContentsLogic(config);
    this.as = new AttributeService(config);
  }

  isRecoveryReasonType: (type: ReasonType) => boolean = (
    type: ReasonType
  ): boolean => [TYPE_HASH_MATCH_RECOVERY].includes(type);

  isSweepReasonType: (type: ReasonType) => boolean = (
    type: ReasonType
  ): boolean =>
    [
      // TYPE_NO_PROBLEM,
      TYPE_DAMAGED,
      TYPE_FILE_NAME_MATCH,
      TYPE_SWEEP_DEDUPPER_FILE,
      TYPE_HASH_MATCH_RECOVERY,
      TYPE_NG_FILE_NAME,
      TYPE_NG_DIR_PATH,
      TYPE_LOW_FILE_SIZE,
      TYPE_LOW_RESOLUTION,
      TYPE_HASH_MATCH,
      TYPE_FILE_MARK_ERASE,
      TYPE_DEEP_LEARNING,
      TYPE_ARCHIVE_EXTRACT,
      TYPE_SCRAP_FILE_TYPE
    ].includes(type);

  isEraseReasonType: (type: ReasonType) => boolean = (
    type: ReasonType
  ): boolean =>
    [
      TYPE_FILE_MARK_ERASE,
      TYPE_LOW_FILE_SIZE,
      TYPE_LOW_RESOLUTION,
      TYPE_LOW_LONG_SIDE
    ].includes(type);

  isBlockReasonType: (type: ReasonType) => boolean = (
    type: ReasonType
  ): boolean => [TYPE_FILE_MARK_BLOCK, TYPE_DEEP_LEARNING].includes(type);

  isDedupeReasonType: (type: ReasonType) => boolean = (
    type: ReasonType
  ): boolean =>
    [
      TYPE_FILE_MARK_DEDUPE,
      TYPE_P_HASH_REJECT_NEWER,
      TYPE_P_HASH_REJECT_LOW_FILE_SIZE,
      TYPE_P_HASH_REJECT_LOW_RESOLUTION
    ].includes(type);
}