org.xlcloud.console.images.controllers.ImageBean.java Source code

Java tutorial

Introduction

Here is the source code for org.xlcloud.console.images.controllers.ImageBean.java

Source

/*
 * Copyright 2012 AMG.lab, a Bull Group Company
 * 
 * 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 org.xlcloud.console.images.controllers;

import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;

import org.apache.commons.io.FileUtils;
import org.xlcloud.console.controllers.i18n.MessageController;
import org.xlcloud.console.controllers.request.RequestParameters;
import org.xlcloud.console.controllers.request.path.VcmsGuiPaths;
import org.xlcloud.console.images.repository.ImagesRepository;
import org.xlcloud.console.images.utils.PropertyStringConverter;
import org.xlcloud.console.scope.ViewScoped;

import org.xlcloud.service.Account;
import org.xlcloud.service.Image;

/**
 */
@Named
@ViewScoped
public class ImageBean {

    public static final String IMAGE_ID = "imageId";

    private Image image;

    private Account projectAccount;

    @Inject
    private ImagesRepository imagesRepository;

    @Inject
    private RequestParameters requestParameters;

    @Inject
    private MessageController messages;

    /**
     * Initializes bean by downloading cloud image.
     * Request parameter {@link #IMAGE_ID} is required.
     */
    @PostConstruct
    public void loadImage() {
        Long imageId = getImageId();
        this.image = imagesRepository.get(imageId);
    }

    /**
     * Removes current cloud image from images catalog.
     * @return redirection URL
     */
    public String remove() {
        imagesRepository.remove(image.getId());
        messages.addMessage("images.list.removeSuccessful");

        return VcmsGuiPaths.IMAGES + "?faces-redirect=true";
    }

    /**
     * Returns the requested cloud image
     * @return requested cloud image
     */
    public Image getImage() {
        return image;
    }

    /**
     * Sets the value of {@link #imagesRepository}
     * @param imagesRepository -
     *  images repository
     */
    public void setImagesRepository(ImagesRepository imagesRepository) {
        this.imagesRepository = imagesRepository;
    }

    /**
     * Sets the value of {@link #requestParameters}
     * @param requestParameters request parameters
     */
    public void setRequestParameters(RequestParameters requestParameters) {
        this.requestParameters = requestParameters;
    }

    private Long getImageId() {
        return this.requestParameters.getParameterAsLong(IMAGE_ID);
    }

    public String getPropertyString() {
        return PropertyStringConverter.stringifyProperties(image.getProperties());
    }

    public void setPropertyString(String string) {
        image.setProperties(PropertyStringConverter.parseProperties(string));
    }

    /**
     * Gets the value of {@link #imageAccount}.
     * @return value of {@link #imageAccount}
     */
    public Account getImageAccount() {
        if (projectAccount == null) {
            projectAccount = imagesRepository.getAccount(image.getAccountId());
        }
        return projectAccount;
    }

    public String getImageSize() {
        return FileUtils.byteCountToDisplaySize(image.getSize());
    }

}