/**
* http://surenpi.com
*/
package org.suren.autotest.platform.util;
import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import org.suren.autotest.platform.model.PageInfo;
import org.suren.autotest.platform.schemas.autotest.Autotest;
import org.suren.autotest.platform.schemas.autotest.PageType;
import org.suren.autotest.platform.schemas.datasource.DataSourcePageFieldType;
import org.suren.autotest.platform.schemas.datasource.DataSourcePageType;
import org.suren.autotest.platform.schemas.datasource.DataSources;
import org.suren.autotest.platform.schemas.datasource.DataSources.DataSource;
import org.suren.autotest.platform.schemas.datasource.DataTypeEnum;
import org.suren.autotest.platform.schemas.suite.Suite;
import org.suren.autotest.platform.schemas.suite.SuitePageType;
/**
* @author suren
* @date 2017年1月19日 上午8:21:27
*/
public abstract class JAXBUtils
{
/**
* 清空含有加密的数据
* @param dataSources
*/
public static void clearEncryptData(DataSources dataSources)
{
if(dataSources == null || dataSources.getDataSource() == null)
{
return;
}
for(DataSource dataSource : dataSources.getDataSource())
{
if(dataSource == null || dataSource.getPage() == null)
{
continue;
}
for(DataSourcePageType page : dataSource.getPage())
{
if(page == null || page.getField() == null)
{
continue;
}
for(DataSourcePageFieldType field : page.getField())
{
if(field.getType() == DataTypeEnum.ENCRYPT)
{
field.setData("");
}
}
}
}
}
/**
* 把类上含有包名的设置到包配置
* @param dataSources
*/
public static void packageTransfer(DataSources dataSources)
{
List<DataSource> dataSourcesList = dataSources.getDataSource();
for(DataSource dataSource : dataSourcesList)
{
String clazz = dataSource.getPageClass();
int index = clazz.lastIndexOf(".");
if(index > 0)
{
String pkg = clazz.substring(0, index);
String name = clazz.substring(index + 1);
dataSources.setPagePackage(pkg);
dataSource.setPageClass(name);
}
}
}
/**
* 对数据源进行处理
* @param dataSources
*/
public static void dataSourcesTransfer(DataSources dataSources)
{
JAXBUtils.clearEncryptData(dataSources);
JAXBUtils.packageTransfer(dataSources);
}
/**
* 元素定位进行处理
* @param autotest
*/
public static void autotestTransfer(Autotest autotest)
{
List<PageType> pageList = autotest.getPages().getPage();
for(PageType page : pageList)
{
String clazz = page.getClazz();
int index = clazz.lastIndexOf(".");
if(index > 0)
{
String pkg = clazz.substring(0, index);
String name = clazz.substring(index + 1);
autotest.getPages().setPagePackage(pkg);
page.setClazz(name);
}
}
}
/**
* 测试套件包处理
* @param suite
*/
public static void suiteTransfer(Suite suite)
{
List<SuitePageType> suitePageTypeList = suite.getPage();
for(SuitePageType suitePageType : suitePageTypeList)
{
String clazz = suitePageType.getClazz();
int index = clazz.lastIndexOf(".");
if(index > 0)
{
String pkg = clazz.substring(0, index);
String name = clazz.substring(index + 1);
suite.setPagePackage(pkg);
suitePageType.setClazz(name);
}
}
}
public static <T> T getObj(T clazz, String content)
{
try
{
JAXBContext context = JAXBContext.newInstance(clazz.getClass());
ByteArrayInputStream input = new ByteArrayInputStream(content.getBytes("utf-8"));
context.createUnmarshaller().unmarshal(input);
}
catch (JAXBException e)
{
e.printStackTrace();
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
return clazz;
}
}