// Path: src/main/java/com/google/dicomwebfuse/dao/FuseDao.java
// public interface FuseDao {
// 
//   List<DicomStore> getAllDicomStores(QueryBuilder queryBuilder) throws DicomFuseException;
//   DicomStore getSingleDicomStore(QueryBuilder queryBuilder) throws DicomFuseException;
//   List<Study> getStudies(QueryBuilder queryBuilder) throws DicomFuseException;
//   Study getSingleStudy(QueryBuilder queryBuilder) throws DicomFuseException;
//   List<Series> getSeries(QueryBuilder queryBuilder) throws DicomFuseException;
//   Series getSingleSeries(QueryBuilder queryBuilder) throws DicomFuseException;
//   List<Instance> getInstances(QueryBuilder queryBuilder) throws DicomFuseException;
//   Instance getSingleInstance(QueryBuilder queryBuilder) throws DicomFuseException;
// 
//   void downloadInstance(QueryBuilder queryBuilder) throws DicomFuseException;
//   void uploadInstance(QueryBuilder queryBuilder) throws DicomFuseException;
//   void deleteInstance(QueryBuilder queryBuilder) throws DicomFuseException;
//   void createDicomStore(QueryBuilder queryBuilder) throws DicomFuseException;
//   void deleteDicomStore(QueryBuilder queryBuilder) throws DicomFuseException;
// }
// 
// Path: src/main/java/com/google/dicomwebfuse/entities/CloudConf.java
// public class CloudConf {
// 
//   private String stage;
//   private String project;
//   private String location;
//   private String dataSet;
// 
//   public CloudConf(String stage, String project, String location, String dataSet) {
//     this.stage = stage;
//     this.project = project;
//     this.location = location;
//     this.dataSet = dataSet;
//   }
// 
//   public String getStage() {
//     return stage;
//   }
// 
//   public String getProject() {
//     return project;
//   }
// 
//   public String getLocation() {
//     return location;
//   }
// 
//   public String getDataSet() {
//     return dataSet;
//   }
// }
// 
// Path: src/main/java/com/google/dicomwebfuse/entities/cache/CacheTime.java
// public class CacheTime {
// 
//   private final long objectsCacheTime;
//   private final long instanceFilesCacheTime;
// 
//   public CacheTime(long objectsCacheTime, long instanceFilesCacheTime) {
//     this.objectsCacheTime = objectsCacheTime;
//     this.instanceFilesCacheTime = instanceFilesCacheTime;
//   }
// 
//   public long getObjectsCacheTime() {
//     return objectsCacheTime;
//   }
// 
//   public long getInstanceFilesCacheTime() {
//     return instanceFilesCacheTime;
//   }
// 
//   @Override
//   public String toString() {
//     return objectsCacheTime + "," + instanceFilesCacheTime;
//   }
// }
// 
// Path: src/main/java/com/google/dicomwebfuse/parser/Arguments.java
// public class Arguments {
// 
//   @Parameter(
//       names = {"--datasetAddr", "-a"},
//       descriptionKey = "option.datasetAddr",
//       required = true,
//       order = 0,
//       converter = CloudConfigurationConverter.class
//   )
//   public CloudConf cloudConf;
// 
//   @Parameter(
//       names = {"--mountPath", "-p"},
//       descriptionKey = "option.mountPath",
//       required = true,
//       order = 1,
//       converter = PathConverter.class
//   )
//   public Path mountPath;
// 
//   @Parameter(
//       names = {"--cacheTime", "-t"},
//       descriptionKey = "option.cacheTime",
//       converter = CacheTimeConverter.class,
//       order = 2,
//       validateWith = CacheTimePositiveValidator.class
//   )
//   public CacheTime cacheTime = new CacheTime(60, 300);
// 
//   @Parameter(
//       names = {"--cacheSize", "-s"},
//       descriptionKey = "option.cacheSize",
//       converter = LongConverter.class,
//       order = 3,
//       validateWith = CacheSizePositiveValidator.class
//   )
//   public long cacheSize = 10000;
// 
//   @Parameter(
//       names = {"--enableDeletion", "-d"},
//       descriptionKey = "option.enableDeletion",
//       order = 4,
//       converter = BooleanConverter.class
//   )
//   public boolean enableDeletion = true;
// 
//   @Parameter(
//       names = {"--keyFile", "-k"},
//       descriptionKey = "option.keyFile",
//       order = 5,
//       converter = PathConverter.class
//   )
//   public Path keyPath;
// 
//   @Parameter(
//       names = {"--extraMountOptions"},
//       descriptionKey = "option.extraMountOptions",
//       order = 6
//   )
//   public List<String> extraMountOptions = new ArrayList<>();
// 
//   @Parameter(
//       names = {"--help", "-h"},
//       help = true,
//       descriptionKey = "option.help",
//       order = 7
//   )
//   public boolean help = false;
// }


import com.google.dicomwebfuse.dao.FuseDao;
import com.google.dicomwebfuse.entities.CloudConf;
import com.google.dicomwebfuse.entities.cache.CacheTime;
import com.google.dicomwebfuse.parser.Arguments;
import jnr.ffi.Platform.OS;
// Copyright 2019 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.google.dicomwebfuse.fuse;


public class Parameters {

  private final FuseDao fuseDAO;
// Path: src/main/java/com/google/dicomwebfuse/dao/FuseDao.java
// public interface FuseDao {
// 
//   List<DicomStore> getAllDicomStores(QueryBuilder queryBuilder) throws DicomFuseException;
//   DicomStore getSingleDicomStore(QueryBuilder queryBuilder) throws DicomFuseException;
//   List<Study> getStudies(QueryBuilder queryBuilder) throws DicomFuseException;
//   Study getSingleStudy(QueryBuilder queryBuilder) throws DicomFuseException;
//   List<Series> getSeries(QueryBuilder queryBuilder) throws DicomFuseException;
//   Series getSingleSeries(QueryBuilder queryBuilder) throws DicomFuseException;
//   List<Instance> getInstances(QueryBuilder queryBuilder) throws DicomFuseException;
//   Instance getSingleInstance(QueryBuilder queryBuilder) throws DicomFuseException;
// 
//   void downloadInstance(QueryBuilder queryBuilder) throws DicomFuseException;
//   void uploadInstance(QueryBuilder queryBuilder) throws DicomFuseException;
//   void deleteInstance(QueryBuilder queryBuilder) throws DicomFuseException;
//   void createDicomStore(QueryBuilder queryBuilder) throws DicomFuseException;
//   void deleteDicomStore(QueryBuilder queryBuilder) throws DicomFuseException;
// }
// 
// Path: src/main/java/com/google/dicomwebfuse/entities/CloudConf.java
// public class CloudConf {
// 
//   private String stage;
//   private String project;
//   private String location;
//   private String dataSet;
// 
//   public CloudConf(String stage, String project, String location, String dataSet) {
//     this.stage = stage;
//     this.project = project;
//     this.location = location;
//     this.dataSet = dataSet;
//   }
// 
//   public String getStage() {
//     return stage;
//   }
// 
//   public String getProject() {
//     return project;
//   }
// 
//   public String getLocation() {
//     return location;
//   }
// 
//   public String getDataSet() {
//     return dataSet;
//   }
// }
// 
// Path: src/main/java/com/google/dicomwebfuse/entities/cache/CacheTime.java
// public class CacheTime {
// 
//   private final long objectsCacheTime;
//   private final long instanceFilesCacheTime;
// 
//   public CacheTime(long objectsCacheTime, long instanceFilesCacheTime) {
//     this.objectsCacheTime = objectsCacheTime;
//     this.instanceFilesCacheTime = instanceFilesCacheTime;
//   }
// 
//   public long getObjectsCacheTime() {
//     return objectsCacheTime;
//   }
// 
//   public long getInstanceFilesCacheTime() {
//     return instanceFilesCacheTime;
//   }
// 
//   @Override
//   public String toString() {
//     return objectsCacheTime + "," + instanceFilesCacheTime;
//   }
// }
// 
// Path: src/main/java/com/google/dicomwebfuse/parser/Arguments.java
// public class Arguments {
// 
//   @Parameter(
//       names = {"--datasetAddr", "-a"},
//       descriptionKey = "option.datasetAddr",
//       required = true,
//       order = 0,
//       converter = CloudConfigurationConverter.class
//   )
//   public CloudConf cloudConf;
// 
//   @Parameter(
//       names = {"--mountPath", "-p"},
//       descriptionKey = "option.mountPath",
//       required = true,
//       order = 1,
//       converter = PathConverter.class
//   )
//   public Path mountPath;
// 
//   @Parameter(
//       names = {"--cacheTime", "-t"},
//       descriptionKey = "option.cacheTime",
//       converter = CacheTimeConverter.class,
//       order = 2,
//       validateWith = CacheTimePositiveValidator.class
//   )
//   public CacheTime cacheTime = new CacheTime(60, 300);
// 
//   @Parameter(
//       names = {"--cacheSize", "-s"},
//       descriptionKey = "option.cacheSize",
//       converter = LongConverter.class,
//       order = 3,
//       validateWith = CacheSizePositiveValidator.class
//   )
//   public long cacheSize = 10000;
// 
//   @Parameter(
//       names = {"--enableDeletion", "-d"},
//       descriptionKey = "option.enableDeletion",
//       order = 4,
//       converter = BooleanConverter.class
//   )
//   public boolean enableDeletion = true;
// 
//   @Parameter(
//       names = {"--keyFile", "-k"},
//       descriptionKey = "option.keyFile",
//       order = 5,
//       converter = PathConverter.class
//   )
//   public Path keyPath;
// 
//   @Parameter(
//       names = {"--extraMountOptions"},
//       descriptionKey = "option.extraMountOptions",
//       order = 6
//   )
//   public List<String> extraMountOptions = new ArrayList<>();
// 
//   @Parameter(
//       names = {"--help", "-h"},
//       help = true,
//       descriptionKey = "option.help",
//       order = 7
//   )
//   public boolean help = false;
// }


// Path: src/main/java/com/google/dicomwebfuse/fuse/Parameters.java
import com.google.dicomwebfuse.dao.FuseDao;
import com.google.dicomwebfuse.entities.CloudConf;
import com.google.dicomwebfuse.entities.cache.CacheTime;
import com.google.dicomwebfuse.parser.Arguments;
import jnr.ffi.Platform.OS;

// Copyright 2019 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.google.dicomwebfuse.fuse;


public class Parameters {

  private final FuseDao fuseDAO;
  private final CloudConf cloudConf;