コード例 #1
1
ファイル: Ads.java プロジェクト: habib123/SEBA
  public static void viewAd(String id) {

    Ad ad = Ad.findById(Long.parseLong(id));
    List<Category> cats = Category.find("categorytype_id=?1 order by id", "1").fetch();

    EntityManager entityManager = play.db.jpa.JPA.em();
    List<BigInteger> bCounts =
        entityManager
            .createNativeQuery(
                "select count(*) as maxCount from Ad as a group by category_id order by maxCount")
            .getResultList();
    int min = bCounts.get(0).intValue();
    int max = bCounts.get(bCounts.size() - 1).intValue();
    bCounts =
        entityManager
            .createNativeQuery(
                "select count(*) as maxCount from Ad as a group by category_id order by category_id ")
            .getResultList();
    List<String> fonts = new ArrayList<String>();
    for (int i = 0; i < bCounts.size(); i++) {
      BigInteger count = bCounts.get(i);
      int x = Ads.getFontSize(count.intValue(), min, max);
      fonts.add(String.valueOf(x));
    }

    render(ad, fonts, min, max, cats);
  }
コード例 #2
0
ファイル: Schedule.java プロジェクト: chinclubi/TrainerPlus
  public static Result nutritionSchedule() {
    TDEERule tdeeRule = new TDEERule();
    CalEatingRule calEatingRule = new CalEatingRule();
    NutritionRule nuRule = new NutritionRule();
    MeatRule meatRule = new MeatRule();
    VegetableRule vegetableRule = new VegetableRule();
    DrinkRule drinkRule = new DrinkRule();

    User thisUser = User.findById(Long.parseLong(session("userId")));
    double weight = thisUser.getWeight();
    boolean isGain = thisUser.isGain();
    double height = thisUser.getHeight();
    if (weight == 0 || height == 0) {
      flash("error", "Please fill your information.");
      return redirect(routes.Profile.index());
    }
    nuRule.setInput(weight, isGain);
    RulesEngine rulesEngine = aNewRulesEngine().withSilentMode(true).build();
    rulesEngine.registerRule(nuRule);

    meatRule.setInput(true);
    vegetableRule.setInput(true);
    drinkRule.setInput(true);
    rulesEngine.registerRule(meatRule);
    rulesEngine.registerRule(vegetableRule);
    rulesEngine.registerRule(drinkRule);

    rulesEngine.fireRules();

    List<Nutrition> nuList = nuRule.getResult();

    List<RawMaterial> meatList = meatRule.getResult().getAll();
    List<RawMaterial> vetList = vegetableRule.getResult().getAll();
    List<RawMaterial> drinkList = drinkRule.getResult().getAll();

    List<RawMaterial> rawMaterialList = new ArrayList<RawMaterial>(meatList);
    rawMaterialList.addAll(vetList);
    rawMaterialList.addAll(drinkList);

    List<String> tdees = new ArrayList<String>();
    List<String> eatingCals = new ArrayList<String>();
    RulesEngine rulesEngine_tdee = aNewRulesEngine().withSilentMode(true).build();
    RulesEngine rulesEngine_cal = aNewRulesEngine().withSilentMode(true).build();
    rulesEngine_tdee.registerRule(tdeeRule);
    rulesEngine_cal.registerRule(calEatingRule);
    for (int i = 0; i < 5; i++) {
      tdeeRule.setInput(weight, height, thisUser.getGender(), thisUser.getAge(), 1.2 + (i * 0.2));
      rulesEngine_tdee.fireRules();
      tdees.add(tdeeRule.getResult());
      calEatingRule.setInput(Double.parseDouble(tdees.get(i)), isGain);

      rulesEngine_cal.fireRules();
      eatingCals.add(calEatingRule.getResult());
    }
    return ok(nutrition_schedule.render(nuList, rawMaterialList, tdees, eatingCals));
  }
コード例 #3
0
ファイル: UserApp.java プロジェクト: bluemir/hive
 private static void addProjectNotDupped(List<Project> target, List<Project> foundProjects) {
   for (Project project : foundProjects) {
     if (!target.contains(project)) {
       target.add(project);
     }
   }
 }
コード例 #4
0
  public static void showPicasaGallery(Long id, String name) {
    notFoundIfNull(id);
    PicasaGallery gallery = PicasaGallery.findById(id);
    notFoundIfNull(gallery);

    PicasawebService service = new PicasawebService("portfolio");
    List<PhotoEntry> photoEntries = Collections.emptyList();
    try {
      java.net.URL feedUrl = new java.net.URL(gallery.getFeedUrl());

      AlbumFeed feed = service.getFeed(feedUrl, AlbumFeed.class);
      photoEntries = feed.getPhotoEntries();
    } catch (MalformedURLException e) {
      Logger.error("Service URL for Picasa is not well formed");
      e.printStackTrace();
    } catch (IOException e) {
      Logger.error("Error I/O while communicating with Picasa Service");
      e.printStackTrace();
    } catch (ServiceException e) {
      Logger.error("Picasa service error");
      e.printStackTrace();
    }

    List<ImageView> images = new ArrayList<ImageView>();
    for (PhotoEntry entry : photoEntries) {
      ImageView image = new ImageView();
      // We take the largest
      image.thumbnail =
          entry.getMediaThumbnails().get(entry.getMediaThumbnails().size() - 1).getUrl();
      image.url = entry.getMediaContents().get(0).getUrl();
      images.add(image);
    }

    render("Application/gallery.html", images, gallery);
  }
コード例 #5
0
ファイル: Streams.java プロジェクト: janpascal/tweet-play2
  public static Result start() {
    java.util.Map<String, String[]> map = request().body().asFormUrlEncoded();

    List<String> terms = new ArrayList<>(map.size());
    for (int i = 0; i < map.size(); i++) {
      String key = "terms[" + i + "]";
      if (map.containsKey(key)) {
        String[] values = map.get(key);
        if ((values != null) && (values.length >= 1)) {
          terms.add(values[0]);
        }
      }
    }

    StreamConfig config = getConfig();
    config.putTerms(terms);
    config.update();

    StringBuilder sb = new StringBuilder();
    for (String t : terms) {
      sb.append(t);
      sb.append(", ");
    }
    sb.delete(sb.length() - 2, sb.length());

    try {
      startStream(terms);
      flash("success", "Twitter stream started (" + sb.toString() + ")");
    } catch (TwitterException e) {
      Logger.info("Error starting twitter stream", e);
      flash("error", "Error starting Twitter stream" + e.getMessage());
    }
    return redirect(routes.Streams.listAll());
  }
コード例 #6
0
  public static void showGallery(Long id, String name) {
    notFoundIfNull(id);
    Gallery gallery = Gallery.findById(id);
    notFoundIfNull(gallery);

    List<Picture> pictures = gallery.getPictures();
    List<ImageView> images = new ArrayList<ImageView>();
    for (Picture picture : pictures) images.add(picture.toImageView());

    render("Application/gallery.html", images, gallery);
  }
コード例 #7
0
ファイル: SiteApp.java プロジェクト: jasonseok/yobi
  /**
   * 메일 발송 페이지로 이동한다.
   *
   * <p>when 관리자 메일 발송페이지
   *
   * <p>{@code application.conf}에서 SMTP 관련 설정을 가져온다. {@code requiredItems} 중 설정되지 않은 item을 {@code
   * notConfiguredItems}에 저장하고 페이지에 전달한다. 메일 sender는 {@code smtp.user}@{@code smtp.domain} 값으로 구성된다.
   *
   * @param errorMessage 메일 발송 오류메세지
   * @param sended 메일 발송여부
   * @return the result
   */
  public static Result writeMail(String errorMessage, boolean sended) {

    Configuration config = play.Play.application().configuration();
    List<String> notConfiguredItems = new ArrayList<>();
    String[] requiredItems = {"smtp.host", "smtp.user", "smtp.password"};
    for (String key : requiredItems) {
      if (config.getString(key) == null) {
        notConfiguredItems.add(key);
      }
    }

    String sender = config.getString("smtp.user") + "@" + config.getString("smtp.domain");

    return ok(mail.render("title.sendMail", notConfiguredItems, sender, errorMessage, sended));
  }
コード例 #8
0
ファイル: Servers.java プロジェクト: thenodon/bisconf
  private static boolean replaceServerProperties(XMLServer server) {
    Class<?> serverclazz;

    try {
      serverclazz = Class.forName(server.getClazz());
    } catch (ClassNotFoundException e) {
      try {
        serverclazz = Class.forName("com.ingby.socbox.bischeck.servers." + server.getClazz());
      } catch (Exception ret) {
        return false;
      }
    }

    java.util.Properties defaultproperties = null;
    Method method;
    try {
      method = serverclazz.getMethod("getServerProperties");
      defaultproperties = (java.util.Properties) method.invoke(null);
    } catch (Exception ret) {
      return false;
    }

    Iterator<XMLProperty> iter = server.getProperty().iterator();
    // Update the default properties with what is currently set
    // in the server property
    while (iter.hasNext()) {
      XMLProperty xmlprop = iter.next();
      if (defaultproperties.containsKey(xmlprop.getKey()))
        defaultproperties.setProperty(xmlprop.getKey(), xmlprop.getValue());
    }

    // Create a new server property list
    List<XMLProperty> serverproperty = new ArrayList<XMLProperty>();
    Iterator<Object> keyiter = defaultproperties.keySet().iterator();

    while (keyiter.hasNext()) {
      String key = (String) keyiter.next();
      XMLProperty xmlprop = new XMLProperty();
      xmlprop.setKey(key);
      xmlprop.setValue((String) defaultproperties.get(key));
      serverproperty.add(xmlprop);
    }

    server.getProperty().clear();
    server.getProperty().addAll(serverproperty);

    return true;
  }
コード例 #9
0
ファイル: UserDAO.java プロジェクト: linkedin/WhereHows
 public static List<Group> getAllGroups() {
   List<Group> groups = new ArrayList<Group>();
   List<Map<String, Object>> rows = null;
   rows = getJdbcTemplate().queryForList(GET_ALL_GROUPS);
   if (rows != null) {
     for (Map row : rows) {
       String name = (String) row.get(UserRowMapper.USER_FULL_NAME_COLUMN);
       if (StringUtils.isNotBlank(name)) {
         Group group = new Group();
         group.name = name;
         groups.add(group);
       }
     }
   }
   return groups;
 }
コード例 #10
0
ファイル: UserDAO.java プロジェクト: linkedin/WhereHows
 public static List<CompanyUser> getAllCompanyUsers() {
   List<CompanyUser> users = new ArrayList<CompanyUser>();
   List<Map<String, Object>> rows = null;
   rows = getJdbcTemplate().queryForList(GET_ALL_COMPANY_USERS);
   if (rows != null) {
     for (Map row : rows) {
       String userName = (String) row.get(UserRowMapper.USER_ID_COLUMN);
       String displayName = (String) row.get(UserRowMapper.USER_FULL_NAME_COLUMN);
       if (StringUtils.isNotBlank(userName)) {
         CompanyUser user = new CompanyUser();
         user.userName = userName;
         user.displayName = displayName;
         users.add(user);
       }
     }
   }
   return users;
 }
コード例 #11
0
ファイル: UserApp.java プロジェクト: joonhochoi/yobi
  /**
   * ajax 를 이용한 사용자 검색 요청 헤더의 accept 파라미터에 application/json 값이 없으면 406 응답 응답에 포함되는 데이터 수는
   * MAX_FETCH_USERS 로 제한된다 입력 파라미터 query 가 부분매칭 되는 loginId 목록을 json 형태로 응답
   *
   * @param query 검색어
   * @return
   */
  public static Result users(String query) {
    if (!request().accepts("application/json")) {
      return status(Http.Status.NOT_ACCEPTABLE);
    }

    ExpressionList<User> el = User.find.select("loginId").where().contains("loginId", query);
    int total = el.findRowCount();
    if (total > MAX_FETCH_USERS) {
      el.setMaxRows(MAX_FETCH_USERS);
      response().setHeader("Content-Range", "items " + MAX_FETCH_USERS + "/" + total);
    }

    List<String> loginIds = new ArrayList<>();
    for (User user : el.findList()) {
      loginIds.add(user.loginId);
    }

    return ok(toJson(loginIds));
  }
コード例 #12
0
ファイル: UserDAO.java プロジェクト: linkedin/WhereHows
 public static List<UserEntity> getAllUserEntities() {
   List<UserEntity> userEntities = new ArrayList<UserEntity>();
   List<Map<String, Object>> rows = null;
   rows = getJdbcTemplate().queryForList(GET_ALL_COMPANY_USERS_AND_GROUPS);
   if (rows != null) {
     for (Map row : rows) {
       String label = (String) row.get(UserRowMapper.USER_ID_COLUMN);
       String displayName = (String) row.get(UserRowMapper.USER_FULL_NAME_COLUMN);
       String category = (String) row.get(UserRowMapper.CATEGORY_COLUMN);
       if (StringUtils.isNotBlank(label)) {
         UserEntity user = new UserEntity();
         user.label = label;
         user.displayName = displayName;
         user.category = category;
         userEntities.add(user);
       }
     }
   }
   return userEntities;
 }
コード例 #13
0
ファイル: Servers.java プロジェクト: thenodon/bisconf
  public static void saveProperty() {
    String servername = params.get("servername");
    String key = params.get("key");
    String value = params.get("value");

    boolean existingKey = false;
    XMLServers serversconfig = getCache();
    Iterator<XMLServer> servers = serversconfig.getServer().iterator();

    while (servers.hasNext()) {
      XMLServer server = servers.next();

      if (server.getName().equals(servername)) {

        Iterator<XMLProperty> propertiesIter = server.getProperty().iterator();
        while (propertiesIter.hasNext()) {

          XMLProperty xmlprop = propertiesIter.next();

          if (xmlprop.getKey().equals(key)) {
            existingKey = true;
            xmlprop.setValue(value);
          }
        }
        if (!existingKey) {
          List<XMLProperty> propertiesList = server.getProperty();
          XMLProperty property = new XMLProperty();
          property.setKey(key);
          property.setValue(value);
          propertiesList.add(property);
        }
        flash.success(Messages.get("SaveServerPropertySuccess"));
        edit(server.getName());
      }
    }
  }
コード例 #14
0
  public static void upload(String imei, File data) {

    try {

      File pbFile =
          new File(
              Play.configuration.getProperty("application.uploadDataDirectory"),
              imei + "_" + new Date().getTime() + ".pb");
      Logger.info(pbFile.toString());
      data.renameTo(pbFile);

      byte[] dataFrame = new byte[(int) pbFile.length()];
      ;
      DataInputStream dataInputStream =
          new DataInputStream(new BufferedInputStream(new FileInputStream(pbFile)));

      dataInputStream.read(dataFrame);
      Upload upload = Upload.parseFrom(dataFrame);

      Phone phone = Phone.find("imei = ?", imei).first();
      if (phone == null) badRequest();

      for (Upload.Route r : upload.getRouteList()) {

        if (r.getPointList().size() <= 1) continue;

        Agency a = Agency.find("gtfsAgencyId = ?", "DEFAULT").first();
        Route route = new Route("", r.getRouteName(), RouteType.BUS, r.getRouteDescription(), a);
        route.phone = phone;
        route.routeNotes = r.getRouteNotes();
        route.vehicleCapacity = r.getVehicleCapacity();
        route.vehicleType = r.getVehicleType();
        route.captureTime = new Date(r.getStartTime());
        route.save();

        List<String> points = new ArrayList<String>();

        Integer pointSequence = 1;
        for (Upload.Route.Point p : r.getPointList()) {
          points.add(new Double(p.getLon()).toString() + " " + new Double(p.getLat()).toString());
          RoutePoint.addRoutePoint(p, route.id, pointSequence);
          pointSequence++;
        }

        String linestring = "LINESTRING(" + StringUtils.join(points, ", ") + ")";

        BigInteger tripShapeId = TripShape.nativeInsert(TripShape.em(), "", linestring, 0.0);

        TripPattern tp = new TripPattern();
        tp.route = route;
        tp.headsign = r.getRouteName();
        tp.shape = TripShape.findById(tripShapeId.longValue());
        tp.save();

        Integer sequenceId = 0;

        for (Upload.Route.Stop s : r.getStopList()) {
          BigInteger stopId = Stop.nativeInsert(Stop.em(), s);

          TripPatternStop tps = new TripPatternStop();
          tps.stop = Stop.findById(stopId.longValue());
          tps.stopSequence = sequenceId;
          tps.defaultTravelTime = s.getArrivalTimeoffset();
          tps.defaultDwellTime = s.getDepartureTimeoffset() - s.getArrivalTimeoffset();
          tps.pattern = tp;
          tps.board = s.getBoard();
          tps.alight = s.getAlight();
          tps.save();

          sequenceId++;
        }

        // ProcessGisExport gisExport = new ProcessGisExport(tp.id);
        // gisExport.doJob();
      }

      Logger.info("Routes uploaded: " + upload.getRouteList().size());

      dataInputStream.close();

      ok();
    } catch (Exception e) {
      e.printStackTrace();
      badRequest();
    }
  }
コード例 #15
0
ファイル: Ads.java プロジェクト: habib123/SEBA
  public static void list(
      String search, int category, Integer size, Integer page, int firstPage, int lastPage) {
    List<Ad> ads = null;

    List<Category> cats = Category.find("categorytype_id=?1", "1").fetch();

    EntityManager entityManager = play.db.jpa.JPA.em();
    List<BigInteger> bCounts =
        entityManager
            .createNativeQuery(
                "select count(*) as maxCount from Ad as a group by category_id order by maxCount")
            .getResultList();
    int min = bCounts.get(0).intValue();
    int max = bCounts.get(bCounts.size() - 1).intValue();
    bCounts =
        entityManager
            .createNativeQuery(
                "select count(*) as maxCount from Ad as a group by category_id order by category_id ")
            .getResultList();
    List<String> fonts = new ArrayList<String>();
    for (int i = 0; i < bCounts.size(); i++) {
      BigInteger count = bCounts.get(i);
      int x = Ads.getFontSize(count.intValue(), min, max);
      fonts.add(String.valueOf(x));
    }

    int pagesCount = 0;

    page = page != null ? page : 1;
    if (search.trim().length() == 0) {
      Long l = null;
      if (category == 0) {

        ads = Ad.find("order by createDate desc").fetch(page, size);
        l = Ad.count();
      } else {

        ads = Ad.find(" category_id=?1 order by createDate desc", category).fetch(page, size);
        l = Ad.count(" category_id=?1 ", category);
      }

      Long l2 = (l / 10);
      if ((l % 10) > 0) l2 = (long) (Math.floor(l2) + 1);
      pagesCount = Integer.valueOf(l2.intValue());

    } else {
      search = search.toLowerCase();
      Long l = null;
      if (category == 0) {
        ads =
            Ad.find(
                    "(lower(headline) like ?1 OR lower(description) like ?2)",
                    "%" + search + "%",
                    "%" + search + "%")
                .fetch(page, size);
        l =
            Ad.count(
                "(lower(headline) like ?1 OR lower(description) like ?2)",
                "%" + search + "%",
                "%" + search + "%");
      } else {
        ads =
            Ad.find(
                    " category_id=?1 and (lower(headline) like ?2 OR lower(description) like ?3)",
                    category,
                    "%" + search + "%",
                    "%" + search + "%")
                .fetch(page, size);
        l =
            Ad.count(
                "category_id=?1 and (lower(headline) like ?2 OR lower(description) like ?3)",
                category,
                "%" + search + "%",
                "%" + search + "%");
      }

      Long l2 = (l / 10);
      if ((l % 10) > 0) l2 = (long) (Math.floor(l2) + 1);
      pagesCount = Integer.valueOf(l2.intValue());
    }

    if ((lastPage - page) <= 2) {
      firstPage = page - 2;
      lastPage = page + 7;
      if (lastPage > pagesCount) lastPage = pagesCount;

    } else if ((page - firstPage) <= 2) {
      firstPage = page - 7;
      lastPage = page + 2;
      if (firstPage < 1) {
        firstPage = 1;
        lastPage = 10;
      }
    }

    if (lastPage > pagesCount) lastPage = pagesCount;

    render(ads, search, size, page, pagesCount, firstPage, lastPage, cats, fonts);
  }
コード例 #16
0
ファイル: Vender.java プロジェクト: humin11/bnbmg
  public static void impSpec(File file) {
    if (file != null) {
      List<Specification> specifications = new ArrayList<Specification>();
      Specification spec = null;
      Material material = null;
      try {
        FileInputStream fileInputStream = new FileInputStream(file);
        HSSFWorkbook workbook = new HSSFWorkbook(fileInputStream);
        HSSFSheet worksheet = workbook.getSheetAt(0);
        HSSFRow row = null;
        HSSFCell cell = null;
        Map<Integer, String> headerMap = new HashMap<Integer, String>();
        Prop prop = null;
        if (worksheet.getLastRowNum() > 0) {
          row = worksheet.getRow(0);
          for (int i = 0; i < row.getLastCellNum(); i++) {
            headerMap.put(Integer.valueOf(i), row.getCell(i).getStringCellValue());
          }
        }
        for (int i = 1; i < worksheet.getLastRowNum(); i++) {
          row = worksheet.getRow(i);
          cell = row.getCell(0);
          String materialName = cell.getStringCellValue();

          cell = row.getCell(1);
          String specification = cell.getStringCellValue();

          cell = row.getCell(2);
          Double number = cell.getNumericCellValue();

          cell = row.getCell(3);
          String unit = cell.getStringCellValue();

          cell = row.getCell(4);
          String company = cell.getStringCellValue();

          cell = row.getCell(5);
          Date date = cell.getDateCellValue();

          cell = row.getCell(6);
          String description = cell.getStringCellValue();

          spec = new Specification();

          for (int x = 7; x < row.getLastCellNum(); x++) {
            cell = row.getCell(x);
            String value = "";
            if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
              value = String.valueOf(cell.getNumericCellValue());
            } else {
              value = cell.getStringCellValue();
            }
            prop = new Prop();
            prop.name = headerMap.get(x);
            prop.value = value;
            prop.save();
            spec.properties.add(prop);
          }

          spec.name = specification;
          spec.specification = specification;
          if (number != null && !"".equals(number)) spec.amount = number;
          spec.unit = unit;
          spec.company = company;
          if (materialName != null && !"".equals(materialName)) {
            material = Material.find("name=?", materialName.trim()).first();
            spec.material = material;
          }
          spec.arrival_time = date;
          spec.description = description;
          spec.save();
          specifications.add(spec);
        }

        renderJSON(specifications);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
コード例 #17
0
  /**
   * Utility method loads all of the workflow form definitions from yaml files contained in the
   * workflow directory.
   *
   * @return
   */
  public static List<FormDefinition> loadWorkflowFormDefinitions() {
    //        List<FormDefinition> formDefs = new ArrayList<>();
    //
    //        URL path = Play.application().classloader().getResource(WORKFLOWS_PATH);
    //        try {
    //            File dir = new File(path.toURI());
    //
    //            File[] workflows = dir.listFiles(new FilenameFilter() {
    //                public boolean accept(File dir, String name) {
    //                    return name.toLowerCase().endsWith(".yaml");
    //                }
    //            });
    //
    //            for (File file : workflows) {
    //                formDefs.add(loadFormDefinition(file.getAbsolutePath()));
    //            }
    //        } catch (URISyntaxException e) { /* Should not occur */ }

    List<FormDefinition> formDefs = new ArrayList<>();

    Collection<config.WorkflowConfig> workflows = ConfigManager.getInstance().getWorkflowConfigs();

    for (config.WorkflowConfig workflow : workflows) {
      FormDefinition formDef = new FormDefinition();
      formDef.name = workflow.getName();
      formDef.title = workflow.getTitle();
      formDef.yamlFile = workflow.getYaml();
      formDef.documentation = workflow.getDocumentation();
      formDef.instructions = workflow.getInstructions();
      formDef.summary = workflow.getSummary();

      for (ParameterConfig parameter : workflow.getParameters()) {
        if (parameter.isTyped()) {
          String type = parameter.getType();

          switch (type) {
            case "text":
              TextField textField = new TextField();
              textField.name = parameter.getName();
              textField.label = parameter.getLabel();
              textField.tooltip = parameter.getDescription();
              formDef.addField(textField);
              break;
            case "select":
              SelectField selectField = new SelectField();
              selectField.name = parameter.getName();
              selectField.label = parameter.getLabel();
              selectField.options = parameter.getOptions();
              selectField.tooltip = parameter.getDescription();
              formDef.addField(selectField);
              break;
            case "upload":
              FileInput fileInput = new FileInput();
              fileInput.name = parameter.getName();
              fileInput.label = parameter.getLabel();
              fileInput.tooltip = parameter.getDescription();
              formDef.addField(fileInput);
              break;
          }
        }
      }

      formDefs.add(formDef);
    }
    return formDefs;
  }