Example usage for org.apache.wicket Localizer getString

List of usage examples for org.apache.wicket Localizer getString

Introduction

In this page you can find the example usage for org.apache.wicket Localizer getString.

Prototype

public String getString(final String key, final Component component) throws MissingResourceException 

Source Link

Usage

From source file:com.gitblit.wicket.panels.ProjectRepositoryPanel.java

License:Apache License

public ProjectRepositoryPanel(String wicketId, Localizer localizer, Component parent, final boolean isAdmin,
        final RepositoryModel entry, final Map<AccessRestrictionType, String> accessRestrictions) {
    super(wicketId);

    final boolean showSwatch = app().settings().getBoolean(Keys.web.repositoryListSwatches, true);
    final boolean showSize = app().settings().getBoolean(Keys.web.showRepositorySizes, true);

    PageParameters pp = WicketUtils.newRepositoryParameter(entry.name);
    add(new LinkPanel("repositoryName", "list",
            StringUtils.getRelativePath(entry.projectPath, StringUtils.stripDotGit(entry.name)),
            SummaryPage.class, pp));
    add(new Label("repositoryDescription", entry.description)
            .setVisible(!StringUtils.isEmpty(entry.description)));

    Fragment iconFragment;/*from  w  w w .  ja v  a2s.co  m*/
    if (entry.isMirror) {
        iconFragment = new Fragment("repoIcon", "mirrorIconFragment", ProjectRepositoryPanel.this);
    } else if (entry.isFork()) {
        iconFragment = new Fragment("repoIcon", "forkIconFragment", ProjectRepositoryPanel.this);
    } else if (entry.isBare) {
        iconFragment = new Fragment("repoIcon", "repoIconFragment", ProjectRepositoryPanel.this);
    } else {
        iconFragment = new Fragment("repoIcon", "cloneIconFragment", ProjectRepositoryPanel.this);
    }
    if (showSwatch) {
        WicketUtils.setCssStyle(iconFragment, "color:" + StringUtils.getColor(entry.toString()));
    }
    add(iconFragment);

    if (StringUtils.isEmpty(entry.originRepository)) {
        add(new Label("originRepository").setVisible(false));
    } else {
        Fragment forkFrag = new Fragment("originRepository", "originFragment", ProjectRepositoryPanel.this);
        forkFrag.add(new LinkPanel("originRepository", null, StringUtils.stripDotGit(entry.originRepository),
                SummaryPage.class, WicketUtils.newRepositoryParameter(entry.originRepository)));
        add(forkFrag);
    }

    if (entry.isSparkleshared()) {
        add(WicketUtils.newImage("sparkleshareIcon", "star_16x16.png",
                localizer.getString("gb.isSparkleshared", parent)));
    } else {
        add(WicketUtils.newClearPixel("sparkleshareIcon").setVisible(false));
    }

    if (!entry.isMirror && entry.isFrozen) {
        add(WicketUtils.newImage("frozenIcon", "cold_16x16.png", localizer.getString("gb.isFrozen", parent)));
    } else {
        add(WicketUtils.newClearPixel("frozenIcon").setVisible(false));
    }

    if (entry.isFederated) {
        add(WicketUtils.newImage("federatedIcon", "federated_16x16.png",
                localizer.getString("gb.isFederated", parent)));
    } else {
        add(WicketUtils.newClearPixel("federatedIcon").setVisible(false));
    }

    if (ArrayUtils.isEmpty(entry.owners)) {
        add(new Label("repositoryOwner").setVisible(false));
    } else {
        String owner = "";
        for (String username : entry.owners) {
            UserModel ownerModel = app().users().getUserModel(username);

            if (ownerModel != null) {
                owner = ownerModel.getDisplayName();
            }
        }
        if (entry.owners.size() > 1) {
            owner += ", ...";
        }
        Label ownerLabel = (new Label("repositoryOwner",
                owner + " (" + localizer.getString("gb.owner", parent) + ")"));
        WicketUtils.setHtmlTooltip(ownerLabel, ArrayUtils.toString(entry.owners));
        add(ownerLabel);
    }

    UserModel user = GitBlitWebSession.get().getUser();
    if (user == null) {
        user = UserModel.ANONYMOUS;
    }
    Fragment repositoryLinks;
    if (user.canAdmin(entry)) {
        repositoryLinks = new Fragment("repositoryLinks", "repositoryOwnerLinks", ProjectRepositoryPanel.this);
        repositoryLinks.add(new BookmarkablePageLink<Void>("editRepository", EditRepositoryPage.class,
                WicketUtils.newRepositoryParameter(entry.name)));
    } else {
        repositoryLinks = new Fragment("repositoryLinks", "repositoryUserLinks", ProjectRepositoryPanel.this);
    }

    repositoryLinks.add(new BookmarkablePageLink<Void>("tree", TreePage.class,
            WicketUtils.newRepositoryParameter(entry.name)).setEnabled(entry.hasCommits));

    repositoryLinks.add(
            new BookmarkablePageLink<Void>("log", LogPage.class, WicketUtils.newRepositoryParameter(entry.name))
                    .setEnabled(entry.hasCommits));

    add(repositoryLinks);

    String lastChange;
    if (entry.lastChange.getTime() == 0) {
        lastChange = "--";
    } else {
        lastChange = getTimeUtils().timeAgo(entry.lastChange);
    }
    Label lastChangeLabel = new Label("repositoryLastChange", lastChange);
    add(lastChangeLabel);
    WicketUtils.setCssClass(lastChangeLabel, getTimeUtils().timeAgoCss(entry.lastChange));

    if (entry.hasCommits) {
        // Existing repository
        add(new Label("repositorySize", entry.size).setVisible(showSize));
    } else {
        // New repository
        add(new Label("repositorySize", localizer.getString("gb.empty", parent)).setEscapeModelStrings(false));
    }

    add(new ExternalLink("syndication", SyndicationServlet
            .asLink(GitBlitRequestUtils.getRelativePathPrefixToContextRoot(), entry.name, null, 0)));
}

From source file:dk.frankbille.scoreboard.components.GameTeamPanel.java

License:Open Source License

public GameTeamPanel(String id, final IModel<GameTeam> model, final IModel<Player> selectedPlayerModel,
        final RatingCalculator rating) {
    super(id, model);

    final IModel<List<Player>> playersModel = new LoadableDetachableModel<List<Player>>() {
        private static final long serialVersionUID = 1L;

        @Override//  ww w  .  j av  a2  s  . c om
        protected List<Player> load() {
            GameTeam gameTeam = model.getObject();
            Team team = gameTeam.getTeam();
            List<Player> players = new ArrayList<Player>(team.getPlayers());
            Collections.sort(players, new PlayerComparator());
            return players;
        }
    };

    WebMarkupContainer gameTeamPanel = new WebMarkupContainer("gameTeamPanel");
    add(gameTeamPanel);

    // Popover - Only show if RatingCalculator is available
    if (rating != null) {
        gameTeamPanel.add(new PopoverBehavior(new StringResourceModel("rating", null),
                new AbstractReadOnlyModel<CharSequence>() {
                    private static final long serialVersionUID = 1L;

                    @Override
                    public CharSequence getObject() {
                        StringBuilder b = new StringBuilder();

                        b.append("<small>");

                        GameTeam gameTeam = model.getObject();
                        List<Player> players = playersModel.getObject();

                        Localizer localizer = Application.get().getResourceSettings().getLocalizer();

                        // Player ratings
                        for (Player player : players) {
                            b.append(player.getName()).append(": ");

                            GamePlayerRatingInterface playerRating = rating
                                    .getGamePlayerRating(gameTeam.getGame().getId(), player.getId());
                            b.append(RATING_VALUE.format(playerRating.getRating()));

                            b.append(" <sup>");
                            b.append(RATING_CHANGE.format(playerRating.getChange()));
                            b.append("</sup><br>");
                        }

                        // Team rating
                        GameRatingInterface gameRatingChange = rating
                                .getGameRatingChange(gameTeam.getGame().getId());
                        b.append("<strong>");
                        b.append(localizer.getString("team", GameTeamPanel.this)).append(": ");
                        b.append(RATING_VALUE.format(gameRatingChange.getRating(gameTeam.getId())));
                        b.append(" ");
                        double change = gameRatingChange.getChange(gameTeam.getId());

                        int playerCount = players.size();
                        if (playerCount > 0) {
                            change /= playerCount;
                        }
                        b.append(" <sup>");
                        b.append(RATING_CHANGE.format(change));

                        b.append("</sup></strong></small>");

                        return b;
                    }
                }));
    }

    // Players
    gameTeamPanel.add(new ListView<Player>("players", playersModel) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(final ListItem<Player> item) {
            final Player player = item.getModelObject();

            PageParameters pp = new PageParameters();
            pp.set(0, player.getId());
            BookmarkablePageLink<Void> playerLink = new BookmarkablePageLink<Void>("playerLink",
                    PlayerPage.class, pp);
            item.add(playerLink);
            playerLink.add(new Label("name", new PropertyModel<String>(item.getModel(), "name")));

            item.add(new Label("plus", "+") {
                private static final long serialVersionUID = 1L;

                @Override
                public boolean isVisible() {
                    return item.getIndex() < getViewSize() - 1;
                }
            });
        }
    });
}

From source file:dk.frankbille.scoreboard.components.PlayerStatisticsPanel.java

License:Open Source License

public PlayerStatisticsPanel(String id, final IModel<Player> selectedPlayerModel, final League league,
        final RatingCalculator rating) {
    super(id);/*from  w w w  . j av a2  s.c om*/

    IModel<List<PlayerResult>> playerResultsModel = new LoadableDetachableModel<List<PlayerResult>>() {
        private static final long serialVersionUID = 1L;

        @Override
        protected List<PlayerResult> load() {
            List<PlayerResult> playerResults = scoreBoardService.getPlayerResults(league);

            Collections.sort(playerResults, new Comparator<PlayerResult>() {
                @Override
                public int compare(PlayerResult o1, PlayerResult o2) {
                    double rating1 = rating.getPlayerRating(o1.getPlayer().getId()).getRating();
                    Double rating2 = rating.getPlayerRating(o2.getPlayer().getId()).getRating();
                    int compare = rating2.compareTo(rating1);

                    if (compare == 0) {
                        compare = new Double(o2.getGamesWonRatio()).compareTo(o1.getGamesWonRatio());
                    }

                    if (compare == 0) {
                        compare = new Integer(o2.getGamesWon()).compareTo(o1.getGamesWon());
                    }

                    if (compare == 0) {
                        compare = new Integer(o1.getGamesLost()).compareTo(o2.getGamesLost());
                    }

                    if (compare == 0) {
                        compare = new Integer(o1.getGamesCount()).compareTo(o2.getGamesCount());
                    }

                    if (compare == 0) {
                        compare = o1.getPlayer().getName().compareTo(o2.getPlayer().getName());
                    }

                    if (compare == 0) {
                        compare = o1.getPlayer().getId().compareTo(o2.getPlayer().getId());
                    }

                    return compare;
                }
            });

            return playerResults;
        }
    };

    add(new ListView<PlayerResult>("players", playerResultsModel) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(final ListItem<PlayerResult> item) {
            final PlayerResult playerResult = item.getModelObject();
            Player player = playerResult.getPlayer();
            Player selectedPlayer = selectedPlayerModel.getObject();

            item.add(new TooltipBehavior(new AbstractReadOnlyModel<CharSequence>() {
                private static final long serialVersionUID = 1L;

                @Override
                public CharSequence getObject() {
                    StringBuilder b = new StringBuilder();
                    Localizer localizer = Application.get().getResourceSettings().getLocalizer();
                    b.append(localizer.getString("won", item)).append(": ").append(playerResult.getGamesWon());
                    b.append(", ");
                    b.append(localizer.getString("lost", item)).append(": ")
                            .append(playerResult.getGamesLost());
                    return b;
                }
            }));

            item.add(RowColorModifier.create(item));
            if (selectedPlayer != null && player.getId().equals(selectedPlayer.getId())) {
                item.add(new AttributeAppender("class", new Model<String>("highlighted"), " "));
            }
            item.add(new Label("number", "" + (item.getIndex() + 1)));
            PageParameters pp = new PageParameters();
            pp.set(0, player.getId());
            BookmarkablePageLink<Void> playerLink = new BookmarkablePageLink<Void>("playerLink",
                    PlayerPage.class, pp);
            item.add(playerLink);
            playerLink.add(new Label("name", new PropertyModel<Integer>(item.getModel(), "player.name")));
            WebComponent medal = new WebComponent("medal") {
                private static final long serialVersionUID = 1L;

                @Override
                public boolean isVisible() {
                    return item.getIndex() < 3;
                }
            };
            medal.add(AttributeModifier.append("class", new AbstractReadOnlyModel<String>() {
                private static final long serialVersionUID = 1L;

                @Override
                public String getObject() {
                    if (item.getIndex() == 0) {
                        return "gold";
                    } else if (item.getIndex() == 1) {
                        return "silver";
                    } else if (item.getIndex() == 2) {
                        return "bronze";
                    }

                    return null;
                }
            }));
            item.add(medal);
            item.add(new Label("gamesCount", new PropertyModel<Integer>(item.getModel(), "gamesCount")));
            item.add(new Label("winRatio", new FormatModel(new DecimalFormat("0.00"),
                    new PropertyModel<Double>(item.getModel(), "gamesWonRatio"))));
            item.add(new Label("rating", new FormatModel(new DecimalFormat("#"),
                    rating.getPlayerRating(player.getId()).getRating())));
            item.add(new Label("trend",
                    new StringResourceModel(item.getModelObject().getTrend().name().toLowerCase(), null)));
        }
    });
}

From source file:dk.frankbille.scoreboard.components.TeamStatisticsPanel.java

License:Open Source License

public TeamStatisticsPanel(String id, final League league, final RatingCalculator rating) {
    super(id);/*from   w  w w .j a  v  a  2  s.co  m*/

    IModel<List<TeamResult>> teamResultsModel = new LoadableDetachableModel<List<TeamResult>>() {
        private static final long serialVersionUID = 1L;

        @Override
        protected List<TeamResult> load() {
            List<TeamResult> teamResults = scoreBoardService.getTeamResults(league);

            Collections.sort(teamResults, new Comparator<TeamResult>() {
                @Override
                public int compare(TeamResult o1, TeamResult o2) {
                    double rating1 = rating.getTeamRating(o1.getTeam()).getRating();
                    Double rating2 = rating.getTeamRating(o2.getTeam()).getRating();
                    int compare = rating2.compareTo(rating1);

                    if (compare == 0) {
                        compare = new Double(o2.getGamesWonRatio()).compareTo(o1.getGamesWonRatio());
                    }

                    if (compare == 0) {
                        compare = new Integer(o2.getGamesWon()).compareTo(o1.getGamesWon());
                    }

                    if (compare == 0) {
                        compare = new Integer(o1.getGamesLost()).compareTo(o2.getGamesLost());
                    }

                    if (compare == 0) {
                        compare = new Integer(o1.getGamesCount()).compareTo(o2.getGamesCount());
                    }

                    return compare;
                }
            });

            return teamResults;
        }
    };

    add(new ListView<TeamResult>("teams", teamResultsModel) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(final ListItem<TeamResult> item) {
            final TeamResult teamResult = item.getModelObject();

            item.add(new TooltipBehavior(new AbstractReadOnlyModel<CharSequence>() {
                private static final long serialVersionUID = 1L;

                @Override
                public CharSequence getObject() {
                    StringBuilder b = new StringBuilder();
                    Localizer localizer = Application.get().getResourceSettings().getLocalizer();
                    b.append(localizer.getString("won", item)).append(": ").append(teamResult.getGamesWon());
                    b.append(", ");
                    b.append(localizer.getString("lost", item)).append(": ").append(teamResult.getGamesLost());
                    return b;
                }
            }));

            item.add(RowColorModifier.create(item));
            item.add(new Label("number", "" + (item.getIndex() + 1)));
            item.add(new Label("name", new PropertyModel<Integer>(item.getModel(), "name")));
            WebComponent medal = new WebComponent("medal") {
                private static final long serialVersionUID = 1L;

                @Override
                public boolean isVisible() {
                    return item.getIndex() < 3;
                }
            };
            medal.add(AttributeModifier.append("class", new AbstractReadOnlyModel<String>() {
                private static final long serialVersionUID = 1L;

                @Override
                public String getObject() {
                    if (item.getIndex() == 0) {
                        return "gold";
                    } else if (item.getIndex() == 1) {
                        return "silver";
                    } else if (item.getIndex() == 2) {
                        return "bronze";
                    }

                    return null;
                }
            }));
            item.add(medal);
            item.add(new Label("gamesCount", new PropertyModel<Integer>(item.getModel(), "gamesCount")));
            item.add(new Label("winRatio", new FormatModel(new DecimalFormat("0.00"),
                    new PropertyModel<Double>(item.getModel(), "gamesWonRatio"))));
            item.add(new Label("rating", new FormatModel(new DecimalFormat("#"),
                    rating.getTeamRating(teamResult.getTeam()).getRating())));
            item.add(new Label("trend",
                    new StringResourceModel(item.getModelObject().getTrend().name().toLowerCase(), null)));
        }
    });
}

From source file:dk.frankbille.scoreboard.game.EditGamePage.java

License:Open Source License

public EditGamePage(PageParameters pageParameters) {
    long gameId = pageParameters.get(0).toLong(-1);

    if (gameId > 0) {
        game = scoreBoardService.getGame(gameId);
    } else {//  ww w . j  a  v  a 2  s  . com
        game = createNewGame();
    }

    add(new Label("editGameTitle", new AbstractReadOnlyModel<String>() {
        private static final long serialVersionUID = 1L;

        @Override
        public String getObject() {
            Localizer localizer = Application.get().getResourceSettings().getLocalizer();
            if (game.getId() == null) {
                return localizer.getString("newGame", EditGamePage.this);
            } else {
                return localizer.getString("editGame", EditGamePage.this);
            }
        }
    }));

    Form<Void> form = new Form<Void>("form") {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit() {
            scoreBoardService.saveGame(game);

            PageParameters pp = new PageParameters();
            pp.add("league", game.getLeague().getId());
            getRequestCycle().setResponsePage(DailyGamePage.class, pp);
        }
    };
    add(form);

    form.add(new FeedbackPanel("feedback"));

    form.add(new DateField("gameDate", new PropertyModel<Date>(this, "game.date")));

    form.add(new GameTeamPanel("team1", new PropertyModel<GameTeam>(this, "game.team1")));
    form.add(new GameTeamPanel("team2", new PropertyModel<GameTeam>(this, "game.team2")));

    IModel<League> defaultLeagueModel = new PropertyModel<League>(this, "game.league");
    form.add(new LeagueSelector("leagueField", defaultLeagueModel));
    //      IModel<List<League>> possibleLeaguesModel = new LoadableDetachableModel<List<League>>() {
    //         private static final long serialVersionUID = 1L;
    //
    //         @Override
    //         protected List<League> load() {
    //            return scoreBoardService.getAllLeagues();
    //         }
    //      };
    //      ChoiceRenderer<League> renderer = new ChoiceRenderer<League>("name", "id");
    //
    //      DropDownChoice<League> leagueField = new DropDownChoice<League>("leagueField", defaultLeagueModel, possibleLeaguesModel, renderer);
    //      leagueField.add(new Select2Enabler());
    //      form.add(leagueField);
}

From source file:dk.frankbille.scoreboard.game.GameTeamPanel.java

License:Open Source License

public GameTeamPanel(String id, IModel<GameTeam> model) {
    super(id, model);

    setRenderBodyOnly(true);// www.j ava  2s . c o  m

    TextField<Integer> scoreField = new TextField<Integer>("score", new PropertyModel<Integer>(model, "score"));
    scoreField.add(new AjaxFormComponentUpdatingBehavior("onchange") {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget arg0) {
        }
    });
    add(scoreField);

    Localizer localizer = Application.get().getResourceSettings().getLocalizer();

    final Select2MultiChoice<Player> players = new Select2MultiChoice<Player>("players",
            new PlayersModel(model), new PlayersProvider());
    players.getSettings().setMinimumInputLength(2);
    players.getSettings().setContainerCssClass("span3");
    players.getSettings().setPlaceholder(localizer.getString("players", null));
    String locString = localizer.getString("playerSearchTermTooShort", null);
    locString = "'" + locString + "'";
    locString = locString.replace("{term}", "'+term+'");
    locString = locString.replace("{minLength}", "'+(minLength-term.length)+'");
    players.getSettings().setFormatInputTooShort("function(term, minLength){return " + locString + "}");
    players.add(new IValidator<Collection<Player>>() {
        private static final long serialVersionUID = 1L;

        @Override
        public void validate(IValidatable<Collection<Player>> validatable) {
            Collection<Player> value = validatable.getValue();
            if (value.isEmpty()) {
                validatable.error(new ValidationError().addKey("teamMustHaveAtLeastOnePlayer"));
            }
        }
    });
    add(players);
}

From source file:eu.uqasar.web.pages.qmtree.metric.QMMetricFormValidator.java

License:Apache License

@Override
public void validate(Form<?> form) {
    final FormComponent name = components[0];
    final FormComponent<Double> lowerLimit = components[1];
    final FormComponent<Double> upperLimit = components[2];

    Localizer loc = getLocalizer(form);
    String nameValue = Objects.stringValue(name.getInput(), true);

    if ("".equals(nameValue)) {
        name.error(loc.getString("form.name.required", name));
    } else if (nameValue.length() > 255) {
        name.error(loc.getString("form.name.max", name));
    }//from w  w  w. j av  a  2s.  c om

    //         if (Double.valueOf(lowerLimit.getValue()) > Double.valueOf(upperLimit.getValue())){
    //            upperLimit.error(loc.getString("form.upperLimit.low", upperLimit));
    //         }
}

From source file:eu.uqasar.web.pages.qmtree.qmodels.QModelFormValidator.java

License:Apache License

@Override
public void validate(Form<?> form) {
    final FormComponent name = components[0];
    final FormComponent key = components[1];
    final boolean isNew = newEntity;
    final String oldKey = previousKey;

    Localizer loc = getLocalizer(form);
    String f1Value = Objects.stringValue(name.getInput(), true);
    String f2Value = Objects.stringValue(key.getInput(), true);

    if ("".equals(f1Value)) {
        name.error(loc.getString("form.name.required", name));
    } else if (f1Value.length() > 255) {
        name.error(loc.getString("form.name.max", name));
    }/*from ww  w . j  a v a2  s  . c  o m*/
    if ("".equals(f2Value)) {
        key.error(loc.getString("form.key.required", key));
    }

    List<String> nodeKeyList = qmodelService.getAllNodeKeys();
    if (!previousKey.equals(f2Value) && !isNew && Collections.frequency(nodeKeyList, f2Value) >= 1) {
        key.error(loc.getString("form.key.repeated", key));
    } else if (!previousKey.equals(f2Value) && isNew && (Collections.frequency(nodeKeyList, f2Value) > 0)) {
        key.error(loc.getString("form.key.repeated", key));
    }
}

From source file:eu.uqasar.web.pages.qmtree.quality.indicator.QMQualityIndicatorFormValidator.java

License:Apache License

@Override
public void validate(Form<?> form) {
    final FormComponent name = components[0];
    final FormComponent<Double> lowerLimit = components[1];
    final FormComponent<Double> upperLimit = components[2];

    Localizer loc = getLocalizer(form);
    String f1Value = Objects.stringValue(name.getInput(), true);
    if ("".equals(f1Value)) {
        name.error(loc.getString("form.name.required", name));
    } else if (f1Value.length() > 255) {
        name.error(loc.getString("form.name.max", name));
    }/* w ww .  j a  v  a 2 s.  c om*/

    //         if (Double.valueOf(lowerLimit.getValue()) > Double.valueOf(upperLimit.getValue())){
    //            upperLimit.error(loc.getString("form.upperLimit.low", upperLimit));
    //         }
}

From source file:gr.abiss.calipso.util.PdfUtils.java

License:Open Source License

public static byte[] getPdf(CalipsoService calipso, Asset asset, Component callerComponent) {
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    String html = null;/*from  www .  ja v a2s . c  om*/
    try {
        Localizer localizer = callerComponent.getLocalizer();
        String template = calipso.getPrintTemplateTextForAsset(asset.getId());// asset.getAssetType().getPrintingTemplate().getTemplateText();
        if (template != null) {
            // template exists, use it
            Reader templateReader = new StringReader(template);
            // create a Velocity context object and add the asset
            final VelocityContext context = new VelocityContext();
            context.put("rootAsset", asset);
            context.put("calipso", calipso);
            // create a writer for capturing the Velocity output
            StringWriter writer = new StringWriter();
            // execute the velocity script and capture the output in writer
            Velocity.evaluate(context, writer, asset.getInventoryCode(), templateReader);
            // get the output as a string
            html = writer.getBuffer().toString();
            // logger.debug("Velocity result: \n"+html);
        } else {
            StringBuffer htmlBuffer = getDefaultHeader();
            htmlBuffer
                    .append("<h1>").append(localizer
                            .getString(asset.getAssetType().getNameTranslationResourceKey(), callerComponent))
                    .append("</h1>");
            htmlBuffer.append("<table cellspacing='0'>");
            htmlBuffer.append("<tr><th>")
                    .append(localizer.getString("asset.form.inventoryCode", callerComponent))
                    .append("</th><td>").append(asset.getInventoryCode());
            htmlBuffer.append("</td></tr>");
            if (MapUtils.isNotEmpty(asset.getCustomAttributes())) {
                Map<AssetTypeCustomAttribute, String> attrs = asset.getCustomAttributes();
                for (Entry<AssetTypeCustomAttribute, String> entry : attrs.entrySet()) {
                    AssetTypeCustomAttribute customAttr = entry.getKey();
                    htmlBuffer
                            .append("<tr><th>").append(localizer
                                    .getString(customAttr.getNameTranslationResourceKey(), callerComponent))
                            .append("</th><td>");

                    if (customAttr.getFormType().equals(AssetTypeCustomAttribute.FORM_TYPE_SELECT) || customAttr
                            .getFormType().equals(AssetTypeCustomAttribute.FORM_TYPE_OPTIONS_TREE)) {
                        htmlBuffer.append(XmlUtils.escapeHTML(localizer
                                .getString(customAttr.getLookupValue().getNameTranslationResourceKey(), null)));
                    } else if (customAttr.getFormType().equals(AssetTypeCustomAttribute.FORM_TYPE_USER)) {
                        User user = customAttr.getUserValue();
                        htmlBuffer.append(user != null ? XmlUtils.escapeHTML(user.getFullName()) : "");
                    } else if (customAttr.getFormType()
                            .equals(AssetTypeCustomAttribute.FORM_TYPE_ORGANIZATION)) {
                        Organization org = customAttr.getOrganizationValue();
                        htmlBuffer.append(org != null ? XmlUtils.escapeHTML(org.getName()) : "");
                    } else if (customAttr.getFormType().equals(AssetTypeCustomAttribute.FORM_TYPE_ASSET)) {
                        Asset innerAsset = customAttr.getAssetValue();
                        htmlBuffer.append(
                                innerAsset != null ? XmlUtils.escapeHTML(innerAsset.getInventoryCode()) : "");
                    } else if (customAttr.getFormType().equals(AssetTypeCustomAttribute.FORM_TYPE_COUNTRY)) {
                        Country country = customAttr.getCountryValue();
                        htmlBuffer.append(country != null
                                ? localizer.getString("country." + country.getId(), callerComponent)
                                : "");
                    } else {
                        htmlBuffer.append(XmlUtils.escapeHTML(entry.getValue()));
                    }
                    htmlBuffer.append("</td></tr>");
                }
            }
            htmlBuffer.append("</table>");

            htmlBuffer.append("</body></html>");
            html = htmlBuffer.toString();
        }
        // convert HTML string to PDF and store it in the buffer output stream 
    } catch (Exception e) {
        logger.error("Failed to creare PDF for asset, html: \n" + html, e);
    }
    writePdf(calipso, os, html);
    return os.toByteArray();
}