/*
* YouTestit source code:
* ======================
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*
* Links:
* ======
* Homepage : http://www.youtestit.org
* Git : https://github.com/youtestit
*/
package org.youtestit.bootstrap;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import org.jboss.logging.Logger;
import org.youtestit.bootstrap.events.InitializeOsAndBrowserEvent;
import org.youtestit.commons.utils.exceptions.ClientException;
import org.youtestit.commons.utils.exceptions.FatalException;
import org.youtestit.commons.utils.exceptions.entities.EntityExistsException;
import org.youtestit.datamodel.dao.BrowserDAO;
import org.youtestit.datamodel.dao.OsDAO;
import org.youtestit.datamodel.entity.Browser;
import org.youtestit.datamodel.entity.Os;
import org.youtestit.datamodel.enums.BrowserType;
import org.youtestit.datamodel.enums.OsArchi;
import org.youtestit.datamodel.enums.OsType;
/**
* InitializeUsers
*
* @author "<a href='mailto:patrickguillerm@gmail.com'>Patrick Guillerm</a>"
* @since Dec 26, 2011
*/
public class InitializeOsAndBrowser extends InitializeHelper {
// =========================================================================
// ATTRIBUTES
// =========================================================================
@Inject
private Logger log;
@Inject
private OsDAO osDAO;
@Inject
private BrowserDAO browserDAO;
// =========================================================================
// CONSTRUCTORS
// =========================================================================
/**
* Initialize file system foldes (/home/${user}/.youtestit).
*
* @param webapp the webapp
*/
public void initialize(@Observes
@InitializeOsAndBrowserEvent
String value) {
log.info("initialize os and browser for YouTestit");
try {
initialiseOS();
initialiseBrowsers();
} catch (ClientException e) {
throw new FatalException(e);
}
}
// =========================================================================
// METHODS
// =========================================================================
/**
* Allow to initialise all default OS.
*
* @throws ClientException if an error has occur.
*/
protected void initialiseOS() throws ClientException {
List<Os> operatingSystems = new ArrayList<Os>();
operatingSystems.add(new Os("Ubuntu", OsType.LINUX, OsArchi.PC_32_BITS));
operatingSystems.add(new Os("Windows Xp", OsType.WINDOWS, OsArchi.PC_32_BITS));
operatingSystems.add(new Os("Mac Os X", OsType.MAC, OsArchi.PC_32_BITS));
for (Os item : operatingSystems) {
try {
begin();
osDAO.create(item);
commit();
} catch (EntityExistsException except) {
log.info(String.format("os %s already initializing.", item.getName()));
} catch (ClientException except) {
log.error(except);
throw except;
}finally{
rollback();
}
}
}
/**
* Allow to initialise all default Browsers.
*
* @throws ClientException if an error has occur.
*/
protected void initialiseBrowsers() throws ClientException {
List<Browser> browsers = new ArrayList<Browser>();
browsers.add(new Browser(BrowserType.FIREFOX, "8.0"));
browsers.add(new Browser(BrowserType.FIREFOX, "9.0.1"));
browsers.add(new Browser(BrowserType.IE, "7"));
browsers.add(new Browser(BrowserType.IE, "8"));
browsers.add(new Browser(BrowserType.SAFARI, "5.1.2"));
browsers.add(new Browser(BrowserType.OPERA, "9"));
browsers.add(new Browser(BrowserType.OPERA, "11.60"));
for (Browser item : browsers) {
try {
begin();
browserDAO.create(item);
commit();
}catch (EntityExistsException except) {
log.info(String.format("browser %s %s already initializing.", item.getType().name(),item.getVersion()));
} catch (ClientException except) {
log.error(except);
throw except;
}finally{
rollback();
}
}
}
}