summaryrefslogtreecommitdiff
path: root/platform/external-system-api/src/com/intellij/openapi/externalSystem/model/project/ExternalSystemSourceType.java
blob: 0e112b1c2b149f37a73b72219ea0e6840263d7bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package com.intellij.openapi.externalSystem.model.project;

/**
 * Enumerates module source types.
 * 
 * @author Denis Zhdanov
 * @since 8/10/11 5:21 PM
 */
public enum ExternalSystemSourceType implements IExternalSystemSourceType {

  SOURCE(false, false, false, false),
  TEST(true, false, false, false),
  EXCLUDED(false, false, false, true),
  SOURCE_GENERATED(true, true, false, false),
  TEST_GENERATED(true, true, false, false),
  RESOURCE(false, false, true, false),
  TEST_RESOURCE(true, false, true, false);

  private final boolean isTest;
  private final boolean isGenerated;
  private final boolean isResource;
  private final boolean isExcluded;

  ExternalSystemSourceType(boolean test, boolean generated, boolean resource, boolean excluded) {
    isTest = test;
    isGenerated = generated;
    isResource = resource;
    isExcluded = excluded;
  }

  @Override
  public boolean isTest() {
    return isTest;
  }

  @Override
  public boolean isGenerated() {
    return isGenerated;
  }

  @Override
  public boolean isResource() {
    return isResource;
  }

  @Override
  public boolean isExcluded() {
    return isExcluded;
  }

  public static ExternalSystemSourceType from(IExternalSystemSourceType sourceType) {
    for (ExternalSystemSourceType systemSourceType : ExternalSystemSourceType.values()) {
      if (systemSourceType.isGenerated == sourceType.isGenerated() &&
          systemSourceType.isResource == sourceType.isResource() &&
          systemSourceType.isTest == sourceType.isTest() &&
          systemSourceType.isExcluded == sourceType.isExcluded()) {
        return systemSourceType;
      }
    }
    throw new IllegalArgumentException("Invalid source type: " + sourceType);
  }
}