// Path: core/src/main/java/org/mskcc/cbio/oncokb/dao/DrugDao.java
// public interface DrugDao extends GenericDao<Drug, Integer> {
//     Drug findDrugById(Integer id);
//     /**
//      *
//      * @param drugName
//      * @return
//      */
//     Drug findDrugByName(String drugName);
// 
//     /**
//      *
//      * @param synonym
//      * @return
//      */
//     List<Drug> findDrugBySynonym(String synonym);
// 
//     /**
//      *
//      * @param ncitCode
//      * @return
//      */
//     Drug findDrugByNcitCode(String ncitCode);
// 
//     @Override
//     void save(Drug drug);
// }
// 
// Path: core/src/main/java/org/mskcc/cbio/oncokb/util/DrugUtils.java
// public class DrugUtils {
//     public static Set<Drug> getDrugsByNames(Set<String> names, Boolean fuzzy) {
//         Set<Drug> result = new HashSet<>();
//         if (fuzzy == null) {
//             fuzzy = false;
//         }
//         if (names != null) {
//             Set<Drug> drugs = getAllDrugs();
//             for (Drug drug : drugs) {
//                 for (String name : names) {
//                     if (stringInSet(Collections.singleton(drug.getDrugName()), name, fuzzy)) {
//                         result.add(drug);
//                     }
//                 }
//             }
//         }
//         return result;
//     }
// 
//     public static Set<Drug> getDrugsBySynonyms(Set<String> synonyms, Boolean fuzzy) {
//         Set<Drug> result = new HashSet<>();
//         if (fuzzy == null) {
//             fuzzy = false;
//         }
//         if (synonyms != null) {
//             Set<Drug> drugs = getAllDrugs();
//             for (Drug drug : drugs) {
//                 for (String synonym : synonyms) {
//                     if (stringInSet(drug.getSynonyms(), synonym, fuzzy)) {
//                         result.add(drug);
//                     }
//                 }
//             }
//         }
//         return result;
//     }
// 
//     public static Drug getDrugByNcitCode(String code) {
//         if (code != null) {
//             Set<Drug> drugs = getAllDrugs();
//             for (Drug drug : drugs) {
//                 if (drug.getNcitCode() != null && drug.getNcitCode().equals(code)) {
//                     return drug;
//                 }
//             }
//         }
//         return null;
//     }
// 
//     public static Set<Drug> getAllDrugs() {
//         Set<Drug> drugs = new HashSet<>();
//         drugs = CacheUtils.getAllDrugs();
//         return drugs;
//     }
// 
//     private static Boolean stringInSet(Set<String> strings, String search, Boolean fuzzy) {
//         if (strings != null) {
//             for (String string : strings) {
//                 if (fuzzy) {
//                     if (StringUtils.containsIgnoreCase(string, search)) {
//                         return true;
//                     }
//                 } else {
//                     if (string.equals(search)) {
//                         return true;
//                     }
//                 }
//             }
//         }
//         return false;
//     }
// 
//     public static void updateDrugName(Drug drug, String newDrugName) {
//         drug.getSynonyms().remove(newDrugName);
//         drug.getSynonyms().add(drug.getDrugName());
//         drug.setDrugName(newDrugName);
//     }
// }


import io.swagger.annotations.ApiParam;
import org.apache.commons.collections.CollectionUtils;
import org.mskcc.cbio.oncokb.bo.DrugBo;
import org.mskcc.cbio.oncokb.dao.DrugDao;
import org.mskcc.cbio.oncokb.model.Drug;
import org.mskcc.cbio.oncokb.util.ApplicationContextSingleton;
import org.mskcc.cbio.oncokb.util.DrugUtils;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.io.IOException;
import java.util.*;
package org.mskcc.cbio.oncokb.api.pub.v1;




@javax.annotation.Generated(value = "class io.swagger.codegen.languages.SpringCodegen", date = "2016-10-14T18:47:53.991Z")

@Controller
public class DrugsApiController implements DrugsApi {

    public ResponseEntity<List<Drug>> drugsGet() {
        DrugBo drugBo = ApplicationContextSingleton.getDrugBo();
// Path: core/src/main/java/org/mskcc/cbio/oncokb/dao/DrugDao.java
// public interface DrugDao extends GenericDao<Drug, Integer> {
//     Drug findDrugById(Integer id);
//     /**
//      *
//      * @param drugName
//      * @return
//      */
//     Drug findDrugByName(String drugName);
// 
//     /**
//      *
//      * @param synonym
//      * @return
//      */
//     List<Drug> findDrugBySynonym(String synonym);
// 
//     /**
//      *
//      * @param ncitCode
//      * @return
//      */
//     Drug findDrugByNcitCode(String ncitCode);
// 
//     @Override
//     void save(Drug drug);
// }
// 
// Path: core/src/main/java/org/mskcc/cbio/oncokb/util/DrugUtils.java
// public class DrugUtils {
//     public static Set<Drug> getDrugsByNames(Set<String> names, Boolean fuzzy) {
//         Set<Drug> result = new HashSet<>();
//         if (fuzzy == null) {
//             fuzzy = false;
//         }
//         if (names != null) {
//             Set<Drug> drugs = getAllDrugs();
//             for (Drug drug : drugs) {
//                 for (String name : names) {
//                     if (stringInSet(Collections.singleton(drug.getDrugName()), name, fuzzy)) {
//                         result.add(drug);
//                     }
//                 }
//             }
//         }
//         return result;
//     }
// 
//     public static Set<Drug> getDrugsBySynonyms(Set<String> synonyms, Boolean fuzzy) {
//         Set<Drug> result = new HashSet<>();
//         if (fuzzy == null) {
//             fuzzy = false;
//         }
//         if (synonyms != null) {
//             Set<Drug> drugs = getAllDrugs();
//             for (Drug drug : drugs) {
//                 for (String synonym : synonyms) {
//                     if (stringInSet(drug.getSynonyms(), synonym, fuzzy)) {
//                         result.add(drug);
//                     }
//                 }
//             }
//         }
//         return result;
//     }
// 
//     public static Drug getDrugByNcitCode(String code) {
//         if (code != null) {
//             Set<Drug> drugs = getAllDrugs();
//             for (Drug drug : drugs) {
//                 if (drug.getNcitCode() != null && drug.getNcitCode().equals(code)) {
//                     return drug;
//                 }
//             }
//         }
//         return null;
//     }
// 
//     public static Set<Drug> getAllDrugs() {
//         Set<Drug> drugs = new HashSet<>();
//         drugs = CacheUtils.getAllDrugs();
//         return drugs;
//     }
// 
//     private static Boolean stringInSet(Set<String> strings, String search, Boolean fuzzy) {
//         if (strings != null) {
//             for (String string : strings) {
//                 if (fuzzy) {
//                     if (StringUtils.containsIgnoreCase(string, search)) {
//                         return true;
//                     }
//                 } else {
//                     if (string.equals(search)) {
//                         return true;
//                     }
//                 }
//             }
//         }
//         return false;
//     }
// 
//     public static void updateDrugName(Drug drug, String newDrugName) {
//         drug.getSynonyms().remove(newDrugName);
//         drug.getSynonyms().add(drug.getDrugName());
//         drug.setDrugName(newDrugName);
//     }
// }


// Path: web/src/main/java/org/mskcc/cbio/oncokb/api/pub/v1/DrugsApiController.java
import io.swagger.annotations.ApiParam;
import org.apache.commons.collections.CollectionUtils;
import org.mskcc.cbio.oncokb.bo.DrugBo;
import org.mskcc.cbio.oncokb.dao.DrugDao;
import org.mskcc.cbio.oncokb.model.Drug;
import org.mskcc.cbio.oncokb.util.ApplicationContextSingleton;
import org.mskcc.cbio.oncokb.util.DrugUtils;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.io.IOException;
import java.util.*;

package org.mskcc.cbio.oncokb.api.pub.v1;




@javax.annotation.Generated(value = "class io.swagger.codegen.languages.SpringCodegen", date = "2016-10-14T18:47:53.991Z")

@Controller
public class DrugsApiController implements DrugsApi {

    public ResponseEntity<List<Drug>> drugsGet() {
        DrugBo drugBo = ApplicationContextSingleton.getDrugBo();
        List<Drug> drugs = new ArrayList<>(DrugUtils.getAllDrugs());