PageRenderTime 151ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/etrader_backend/src/il/co/etrader/backend/cms/CmsGuiBindingsManager.java

https://bitbucket.org/invest/anyoption
Java | 371 lines | 297 code | 69 blank | 5 comment | 22 complexity | fd3d66f198ebe56c506048ad8f65d0cf MD5 | raw file
Possible License(s): BSD-3-Clause, MIT
  1. package il.co.etrader.backend.cms;
  2. import il.co.etrader.backend.cms.CMSConstants.fileType;
  3. import il.co.etrader.backend.cms.common.CMSUtil;
  4. import il.co.etrader.backend.cms.common.CommonCMSBean;
  5. import il.co.etrader.backend.cms.common.PropertyTypeEnum;
  6. import java.io.File;
  7. import java.io.IOException;
  8. import java.io.Serializable;
  9. import java.sql.SQLException;
  10. import java.util.ArrayList;
  11. import javax.faces.context.FacesContext;
  12. import javax.faces.model.SelectItem;
  13. import javax.servlet.http.HttpSession;
  14. import org.apache.commons.configuration.ConfigurationException;
  15. import org.apache.log4j.Logger;
  16. import com.anyoption.common.beans.JmxServerConfig;
  17. import com.anyoption.common.managers.JmxServerConfigManager;
  18. public class CmsGuiBindingsManager implements Serializable{
  19. /**
  20. *
  21. */
  22. private static final long serialVersionUID = -6380268964127668249L;
  23. // the name of the application which is edited example: anyoption, etrader, backend
  24. private static final String ANYOPTION = "anyoption";
  25. private static final Logger logger = Logger.getLogger(CmsGuiBindingsManager.class);
  26. private String editors;
  27. private String userName;
  28. private String password;
  29. private String source="etrader_ant_scripts/test/test.txt";
  30. private String baseDir;
  31. private String cvsMessage;
  32. private String sessionId;
  33. private String uploadImgPath;
  34. private Cvs interfaceCvs;
  35. private Akamai interfaceAkamai;
  36. private BundleSelection ineterfaceBundleSelection;
  37. private Ftp interfaceFtp;
  38. private CacheReloader interfaceCacheReloader;
  39. private CommonCMSBean commonCmsBean;
  40. @SuppressWarnings("deprecation")
  41. public CmsGuiBindingsManager() throws SQLException{
  42. FacesContext facesContext = FacesContext.getCurrentInstance();
  43. interfaceCvs = (Cvs)facesContext.getApplication().createValueBinding("#{CVS}").getValue(facesContext);
  44. interfaceAkamai = (Akamai)facesContext.getApplication().createValueBinding("#{Akamai}").getValue(facesContext);
  45. ineterfaceBundleSelection = (BundleSelection)facesContext.getApplication().createValueBinding("#{cmsBundleSelection}").getValue(facesContext);
  46. commonCmsBean = (CommonCMSBean) CMSUtil.getSessionObject(CMSConstants.COMMON_CMS_BEAN_NAME);
  47. interfaceFtp = (Ftp) facesContext.getApplication().createValueBinding("#{Ftp}").getValue(facesContext);
  48. interfaceCacheReloader = (CacheReloader)facesContext.getApplication().createValueBinding("#{Jmx}").getValue(facesContext);
  49. HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false);
  50. setSessionId(session.getId());
  51. userName = commonCmsBean.getCvsUserName();
  52. password = commonCmsBean.getCvsPassword();
  53. baseDir=commonCmsBean.getCmsCheckoutDir();
  54. }
  55. public CmsGuiBindingsManager(String bindingValue) throws SQLException{
  56. FacesContext facesContext = FacesContext.getCurrentInstance();
  57. interfaceCacheReloader = (CacheReloader)facesContext.getApplication().createValueBinding(bindingValue).getValue(facesContext);
  58. }
  59. // for property files
  60. public boolean edit(CmsDataObjects cmsDataObjects){
  61. source=getSource(cmsDataObjects);
  62. try {
  63. deleteFile(baseDir+source);
  64. } catch (Exception e) {
  65. cvsMessage=e.toString();
  66. return false;
  67. }
  68. interfaceCvs.checkoutFile(baseDir,source, userName, password);
  69. cvsMessage=interfaceCvs.getGet_message();
  70. commonCmsBean.setCurrentCmsPropertyStage(CommonCMSBean.CmsStage.EDITORS);
  71. commonCmsBean.setCurrentCvsPropertyPath(source);
  72. if(!isExistFile(baseDir+source)){
  73. cvsMessage="File:"+source+" is not chekout!"+cvsMessage;
  74. return false;
  75. }
  76. editors=interfaceCvs.editors(source, userName, password);
  77. cvsMessage=interfaceCvs.getGet_message();
  78. commonCmsBean.setCurrentCmsPropertyStage(CommonCMSBean.CmsStage.EDITORS);
  79. commonCmsBean.setCurrentCvsPropertyPath(source);
  80. if (editors==null){
  81. interfaceCvs.edit(baseDir+source, userName, password);
  82. try {
  83. ineterfaceBundleSelection.load(cmsDataObjects.getSkin());
  84. } catch (Exception e) {
  85. cvsMessage=e.getMessage();
  86. return false;
  87. }
  88. commonCmsBean.setCurrentCmsPropertyStage(CommonCMSBean.CmsStage.EDIT);
  89. commonCmsBean.setCurrentCvsPropertyPath(baseDir+source);
  90. cvsMessage="File is in EDIT mode!";
  91. }
  92. else {
  93. cvsMessage=getEditorsMsg(editors);
  94. return false;
  95. }
  96. return true;
  97. }
  98. public boolean editImg(CmsDataObjects cmsDataObjects){
  99. source=getSource(cmsDataObjects);
  100. try {
  101. deleteFile(baseDir+source);
  102. } catch (Exception e) {
  103. cvsMessage=e.toString();
  104. return false;
  105. }
  106. interfaceCvs.checkoutFile(baseDir,source, userName, password);
  107. cvsMessage=interfaceCvs.getGet_message();
  108. commonCmsBean.setCurrentCmsImageStage(CommonCMSBean.CmsStage.EDITORS);
  109. commonCmsBean.setCurrentCvsImagePath(source);
  110. if(!isExistFile(baseDir+source)){
  111. cvsMessage="File:"+source+" is not chekout!"+cvsMessage;
  112. return false;
  113. }
  114. editors=interfaceCvs.editors(source, userName, password);
  115. commonCmsBean.setCurrentCmsImageStage(CommonCMSBean.CmsStage.EDITORS);
  116. commonCmsBean.setCurrentCvsImagePath(source);
  117. if (editors==null){
  118. interfaceCvs.edit(baseDir+source, userName, password);
  119. commonCmsBean.setCurrentCmsImageStage(CommonCMSBean.CmsStage.EDIT);
  120. commonCmsBean.setCurrentCvsImagePath(baseDir+source);
  121. uploadImgPath=baseDir+source;
  122. cvsMessage="File is in EDIT mode!";
  123. }
  124. else {
  125. cvsMessage=getEditorsMsg(editors);
  126. return false;
  127. }
  128. return true;
  129. }
  130. public boolean preview(CmsDataObjects cmsDataObjects) throws ConfigurationException, IOException{
  131. if(cmsDataObjects.getType().equals(PropertyTypeEnum.IMAGE)){
  132. interfaceFtp.preview(baseDir, source, fileType.image, userName, password);
  133. commonCmsBean.setCurrentCmsImageStage(CommonCMSBean.CmsStage.PREVIEW);
  134. commonCmsBean.setCurrentCvsImagePath(source);
  135. cvsMessage = "Ftp result: " + interfaceFtp.getMessage();
  136. }
  137. else{
  138. ineterfaceBundleSelection.setValue(cmsDataObjects.getSkin(), cmsDataObjects.getPage(), cmsDataObjects.getType(), cmsDataObjects.getKey(), cmsDataObjects.getValue());
  139. interfaceFtp.preview(baseDir, source, fileType.property, userName, password);
  140. commonCmsBean.setCurrentCmsPropertyStage(CommonCMSBean.CmsStage.PREVIEW);
  141. commonCmsBean.setCurrentCvsPropertyPath(source);
  142. cvsMessage = "Ftp result: " + interfaceFtp.getMessage();
  143. interfaceCacheReloader.clearTestEnvCache(ANYOPTION);
  144. }
  145. return true;
  146. }
  147. public boolean initAssetIndexMarket(String application, ArrayList<String> serverResult) throws SQLException {
  148. boolean res = true;
  149. int i = 0;
  150. for(JmxServerConfig serves : JmxServerConfigManager.getJmxServersConfig()){
  151. i++;
  152. if(!interfaceCacheReloader.initAssetIndexMarketsCache(application, serves)){
  153. res = false;
  154. }
  155. serverResult.add( i + ".Server:" + serves.getAddress() + " Is Refresh:" + res);
  156. }
  157. return res;
  158. }
  159. public boolean rollback(CmsDataObjects cmsDataObjects ){
  160. interfaceCvs.unedit(baseDir+source, userName, password);
  161. if(cmsDataObjects.getType().equals(PropertyTypeEnum.IMAGE)){
  162. commonCmsBean.setCurrentCmsImageStage(CommonCMSBean.CmsStage.UNEDIT);
  163. commonCmsBean.setCurrentCvsImagePath(source);
  164. } else {
  165. commonCmsBean.setCurrentCmsPropertyStage(CommonCMSBean.CmsStage.UNEDIT);
  166. commonCmsBean.setCurrentCvsPropertyPath(source);
  167. }
  168. try {
  169. deleteFile(baseDir+source);
  170. } catch (Exception e) {
  171. cvsMessage=e.toString();
  172. return false;
  173. }
  174. if(isExistFile(baseDir+source)){
  175. cvsMessage="File:"+source+" is not delete";
  176. return false;
  177. }
  178. interfaceCvs.checkoutFile(baseDir,source, userName, password);
  179. cvsMessage=interfaceCvs.getGet_message();
  180. try {
  181. ineterfaceBundleSelection.load(cmsDataObjects.getSkin());
  182. } catch (Exception e) {
  183. e.printStackTrace();
  184. cvsMessage="Error when load properties files "+e.toString();
  185. }
  186. if(cmsDataObjects.getType().equals(PropertyTypeEnum.IMAGE)){
  187. interfaceFtp.preview(baseDir, source, fileType.image, userName, password);
  188. cvsMessage = "Ftp result: " + interfaceFtp.getMessage();
  189. commonCmsBean.setCurrentCmsImageStage(CommonCMSBean.CmsStage.CHECKOUT);
  190. commonCmsBean.setCurrentCvsImagePath(source);
  191. }else{
  192. interfaceFtp.preview(baseDir, source, fileType.property, userName, password);
  193. cvsMessage = "Ftp result: " + interfaceFtp.getMessage();
  194. interfaceCacheReloader.clearTestEnvCache(ANYOPTION);
  195. commonCmsBean.setCurrentCmsPropertyStage(CommonCMSBean.CmsStage.CHECKOUT);
  196. commonCmsBean.setCurrentCvsPropertyPath(source);
  197. }
  198. if(!isExistFile(baseDir+source)){
  199. cvsMessage="File:"+source+" is not chekout whenr ROLLBACK!"+cvsMessage;
  200. return false;
  201. }
  202. cvsMessage="File is ROLLBACK and in UNEDIT mode!";
  203. return true;
  204. }
  205. public boolean commit(CmsDataObjects cmsDataObjects){
  206. if(cmsDataObjects.getType().equals(PropertyTypeEnum.IMAGE)){
  207. interfaceCvs.commit(baseDir, baseDir+source, userName, password);
  208. cvsMessage=interfaceCvs.getGet_message();
  209. interfaceCvs.unedit(source, userName, password);
  210. interfaceFtp.publish(baseDir, source, fileType.image, userName, password);
  211. interfaceAkamai.refresh("http://images.anyoption.com/", cmsDataObjects.getAkamaiDestination());
  212. if( !checkAkamai(interfaceAkamai.getGet_code())){
  213. cvsMessage="File is COMMIT and ERROR Akamai";
  214. return false;
  215. }
  216. commonCmsBean.setCurrentCmsImageStage(CommonCMSBean.CmsStage.END);
  217. commonCmsBean.setCurrentCvsImagePath(source);
  218. }else{
  219. interfaceCvs.commit(baseDir, baseDir+source, userName, password);
  220. cvsMessage=interfaceCvs.getGet_message();
  221. interfaceCvs.unedit(source, userName, password);
  222. interfaceFtp.publish(baseDir, source, fileType.property, userName, password);
  223. cvsMessage = "Ftp result: " + interfaceFtp.getMessage();
  224. interfaceCacheReloader.clearProdEnvCache(ANYOPTION);
  225. commonCmsBean.setCurrentCmsPropertyStage(CommonCMSBean.CmsStage.END);
  226. commonCmsBean.setCurrentCvsPropertyPath(source);
  227. }
  228. return true;
  229. }
  230. private boolean checkAkamai (int code){
  231. String strCgode=Integer.toString(code);
  232. if(strCgode.substring(1, 1).contains("3") || strCgode.substring(1, 1).contains("4") ){
  233. return false;
  234. }
  235. return true;
  236. }
  237. public ArrayList<CmsDataObjects> search(int skinId,String page,PropertyTypeEnum type,String key){
  238. return ineterfaceBundleSelection.getList(skinId, page, type, key);
  239. }
  240. public ArrayList<SelectItem> getPageList(){
  241. return ineterfaceBundleSelection.getPageList();
  242. }
  243. public ArrayList<SelectItem> getSkinList(){
  244. return ineterfaceBundleSelection.getSkinList();
  245. }
  246. public ArrayList<SelectItem> getKeyList(boolean isAlt){
  247. return ineterfaceBundleSelection.getKeyList(isAlt );
  248. }
  249. public String getCvsMessage(){
  250. return cvsMessage;
  251. }
  252. public String getSessionId() {
  253. return sessionId;
  254. }
  255. public void setSessionId(String sessionId) {
  256. this.sessionId = sessionId;
  257. }
  258. public String getUploadImagePath() {
  259. return uploadImgPath;
  260. }
  261. private boolean isExistFile(String filePath){
  262. File fileCheck=new File(filePath);
  263. return fileCheck.exists();
  264. }
  265. private String getEditorsMsg(String editors){
  266. String[] splitText = editors.split("\t");
  267. return "The file is edit from:"+splitText[1]+" DateTime:" + splitText[2]+" PC:" +splitText[3];
  268. }
  269. private static void deleteFile(String filePath) throws IOException {
  270. File file=new File(filePath);
  271. logger.debug("Begin deleting");
  272. boolean test= file.delete();
  273. System.out.print("Deleted:"+ test+ "file:"+filePath);
  274. logger.debug("End deleting:"+test+ " file:"+filePath);
  275. }
  276. private String getSource(CmsDataObjects cmsDataObjects){
  277. if(cmsDataObjects.getType().equals(PropertyTypeEnum.IMAGE)){
  278. return FacesContext.getCurrentInstance().getExternalContext()
  279. .getInitParameter("il.co.etrader.backend.cms.image_default_path")
  280. + ineterfaceBundleSelection.getSkinImagesFolder(cmsDataObjects.getSkin())+"/" + getParseKey(cmsDataObjects.getKey());
  281. }else{
  282. String tmpStr = ineterfaceBundleSelection.getSkinFilePath(cmsDataObjects.getSkin()).replace(baseDir, "");
  283. return tmpStr;
  284. }
  285. }
  286. private String getParseKey(String key){
  287. String parsedKey="";
  288. String[] temp;
  289. String delimiter = "\\.";
  290. temp = key.split(delimiter);
  291. for(int i =0; i < temp.length ; i++){
  292. if(i==temp.length-2){
  293. parsedKey=parsedKey+(temp[i])+'.';
  294. }else if(i==temp.length-1){
  295. parsedKey=parsedKey+(temp[i]);
  296. }else{
  297. parsedKey=parsedKey+(temp[i])+'/';
  298. }
  299. }
  300. return parsedKey;
  301. }
  302. }