e079613e4db51d7c7e4030043fa460c23e6245b0
[idea/community.git] / json / src / com / jetbrains / jsonSchema / extension / JsonSchemaProjectSelfProviderFactory.java
1 /*
2  * Copyright 2000-2016 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.jetbrains.jsonSchema.extension;
17
18 import com.intellij.openapi.diagnostic.Logger;
19 import com.intellij.openapi.project.Project;
20 import com.intellij.openapi.util.Pair;
21 import com.intellij.openapi.vfs.VirtualFile;
22 import com.jetbrains.jsonSchema.JsonSchemaFileType;
23 import com.jetbrains.jsonSchema.JsonSchemaMappingsProjectConfiguration;
24 import org.jetbrains.annotations.NotNull;
25 import org.jetbrains.annotations.Nullable;
26
27 import java.util.Collections;
28 import java.util.List;
29
30 /**
31  * @author Irina.Chernushina on 2/24/2016.
32  */
33 public class JsonSchemaProjectSelfProviderFactory implements JsonSchemaProviderFactory {
34   private static final Logger LOG = Logger.getInstance("#com.jetbrains.jsonSchema.extension.JsonSchemaProjectSelfProviderFactory");
35   public static final String SCHEMA_JSON_FILE_NAME = "schema.json";
36   private final List<JsonSchemaFileProvider> myProviders;
37
38   public JsonSchemaProjectSelfProviderFactory() {
39     myProviders = Collections.singletonList(new MyJsonSchemaFileProvider());
40   }
41
42   @Override
43   public List<JsonSchemaFileProvider> getProviders(@Nullable Project project) {
44     return myProviders;
45   }
46
47   private static class MyJsonSchemaFileProvider implements JsonSchemaFileProvider {
48     public static final Pair<SchemaType, Object> KEY = Pair.create(SchemaType.schema, SchemaType.schema);
49
50     @Override
51     public boolean isAvailable(@NotNull Project project, @NotNull VirtualFile file) {
52       if (!JsonSchemaFileType.INSTANCE.equals(file.getFileType())) return false;
53       return JsonSchemaMappingsProjectConfiguration.getInstance(project).isRegisteredSchemaFile(file);
54     }
55
56     @NotNull
57     @Override
58     public String getName() {
59       return SCHEMA_JSON_FILE_NAME;
60     }
61
62     @Override
63     public VirtualFile getSchemaFile() {
64       return JsonSchemaProviderFactory.getResourceFile(JsonSchemaProjectSelfProviderFactory.class, "jsonSchema/schema.json");
65     }
66
67     @Override
68     public SchemaType getSchemaType() {
69       return SchemaType.schema;
70     }
71   }
72 }