Thank you Jacques!
I committed a fix to the 2 bugs in rev. 1772689. Kind Regards, Shi Jinghai -----邮件原件----- 发件人: Jacques Le Roux [mailto:[hidden email]] 发送时间: 2016年12月5日 18:22 收件人: [hidden email] 主题: Re: svn commit: r1770621 [1/5] - in /ofbiz/trunk/specialpurpose/pricat: ./ config/ data/ entitydef/ groovyScripts/ groovyScripts/pricat/ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/ofbiz/ src/main... Hi Shi, I just noticed EXCELIMPORT_USERLOGIN is 3 chars too long, EXCELIMPORT_USERLG would work Also there is a RelationNameNotUnique in same place. You should use titles (look for "title" in https://cwiki.apache.org/confluence/display/OFBIZ/Entity+Engine+Guide) like in <relation type="one" fk-name="FATGL_PGL" title="Profit" rel-entity-name="GlAccount"> <key-map field-name="profitGlAccountId" rel-field-name="glAccountId"/> </relation> <relation type="one" fk-name="FATGL_LGL" title="Loss" rel-entity-name="GlAccount"> <key-map field-name="lossGlAccountId" rel-field-name="glAccountId"/> </relation> 2016-12-05 10:57:12,910 |delegator-startup-1 |GenericDelegator |W| =-=-=-=-= Found 2 warnings when checking the entity definitions: 2016-12-05 10:57:12,910 |delegator-startup-1 |GenericDelegator |W| [RelFKNameGT18] The foreign key named EXCELIMPORT_USERLOGIN (length:21) was greater than 18 characters in length for relation UserLogin of entity ExcelImportHistory. 2016-12-05 10:57:12,910 |delegator-startup-1 |GenericDelegator |W| [RelationNameNotUnique] Relation Enumeration of entity ExcelImportHistory is not unique for that entity. Thanks Jacques Le 21/11/2016 à 09:07, [hidden email] a écrit : > Author: shijh > Date: Mon Nov 21 08:07:57 2016 > New Revision: 1770621 > > URL: http://svn.apache.org/viewvc?rev=1770621&view=rev > Log: > OFBIZ-9123 Add a PriCat component under specialpurpose > > Added: > ofbiz/trunk/specialpurpose/pricat/ > ofbiz/trunk/specialpurpose/pricat/build.gradle > ofbiz/trunk/specialpurpose/pricat/config/ > ofbiz/trunk/specialpurpose/pricat/config/PricatUiLabels.xml > ofbiz/trunk/specialpurpose/pricat/config/pricat.properties > ofbiz/trunk/specialpurpose/pricat/data/ > ofbiz/trunk/specialpurpose/pricat/data/PricatData.xml > ofbiz/trunk/specialpurpose/pricat/entitydef/ > ofbiz/trunk/specialpurpose/pricat/entitydef/entitymodel.xml > ofbiz/trunk/specialpurpose/pricat/groovyScripts/ > ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/ > ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImport.groovy > ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImportLog.groovy > ofbiz/trunk/specialpurpose/pricat/ofbiz-component.xml > ofbiz/trunk/specialpurpose/pricat/src/ > ofbiz/trunk/specialpurpose/pricat/src/main/ > ofbiz/trunk/specialpurpose/pricat/src/main/java/ > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/ > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/ > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/ > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractHtmlReport.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReport.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReportThread.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/HtmlReport.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/InterfaceReport.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/InterfaceReportThread.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/sample/ > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/sample/SampleHtmlReport.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/sample/SampleHtmlThread.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/util/ > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/util/ReportEncoder.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/util/ReportStringUtil.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/ > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/AbstractPricatParser.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/InterfacePricatParser.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/PricatEvents.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/PricatParseExcelHtmlReport.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/PricatParseExcelHtmlThread.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/sample/ > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/sample/SamplePricatEvents.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/sample/SamplePricatParser.java > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/poi/ > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/poi/xssf/ > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/poi/xssf/usermodel/ > ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/poi/xssf/usermodel/OFBizPricatUtil.java > ofbiz/trunk/specialpurpose/pricat/webapp/ > ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ > ofbiz/trunk/specialpurpose/pricat/webapp/pricat/WEB-INF/ > ofbiz/trunk/specialpurpose/pricat/webapp/pricat/WEB-INF/controller.xml > ofbiz/trunk/specialpurpose/pricat/webapp/pricat/WEB-INF/web.xml > ofbiz/trunk/specialpurpose/pricat/webapp/pricat/error/ > ofbiz/trunk/specialpurpose/pricat/webapp/pricat/error/error.jsp > ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/ > ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/ExcelImportHistoryReport.ftl > ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/pricatreport.ftl > ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/report.ftl > ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/viewExcelImportHistory.ftl > ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/viewExcelImportLog.ftl > ofbiz/trunk/specialpurpose/pricat/webapp/pricat/includes/ > ofbiz/trunk/specialpurpose/pricat/webapp/pricat/includes/pricat.css > ofbiz/trunk/specialpurpose/pricat/webapp/pricat/index.jsp > ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ > ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/WEB-INF/ > ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/WEB-INF/controller.xml > ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/WEB-INF/web.xml > ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/downloads/ > ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/downloads/SamplePricatTemplate_V1.1.xlsx (with props) > ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/error/ > ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/error/error.jsp > ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/ > ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/SamplePricat.ftl > ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/countdownreport.ftl > ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/countupreport.ftl > ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/main.ftl > ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/parsePricatExcel.ftl > ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/index.jsp > ofbiz/trunk/specialpurpose/pricat/widget/ > ofbiz/trunk/specialpurpose/pricat/widget/CommonScreens.xml > ofbiz/trunk/specialpurpose/pricat/widget/PriCatDemoMenus.xml > ofbiz/trunk/specialpurpose/pricat/widget/PriCatMenus.xml > ofbiz/trunk/specialpurpose/pricat/widget/SampleScreens.xml > > Added: ofbiz/trunk/specialpurpose/pricat/build.gradle > URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/build.gradle?rev=1770621&view=auto > ============================================================================== > --- ofbiz/trunk/specialpurpose/pricat/build.gradle (added) > +++ ofbiz/trunk/specialpurpose/pricat/build.gradle Mon Nov 21 08:07:57 2016 > @@ -0,0 +1,25 @@ > +/* > + * 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. > + */ > +dependencies { > + pluginLibsCompile 'org.safehaus.jug:jug:2.0.0:asl' > + pluginLibsCompile 'org.apache.poi:poi-ooxml:3.14' > + pluginLibsCompile 'org.apache.poi:poi-ooxml-schemas:3.14' > + pluginLibsCompile 'org.apache.poi:poi-excelant:3.14' > + pluginLibsCompile 'org.apache.poi:poi-scratchpad:3.14' > +} > \ No newline at end of file > > Added: ofbiz/trunk/specialpurpose/pricat/config/PricatUiLabels.xml > URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/config/PricatUiLabels.xml?rev=1770621&view=auto > ============================================================================== > --- ofbiz/trunk/specialpurpose/pricat/config/PricatUiLabels.xml (added) > +++ ofbiz/trunk/specialpurpose/pricat/config/PricatUiLabels.xml Mon Nov 21 08:07:57 2016 > @@ -0,0 +1,532 @@ > +<?xml version="1.0" encoding="UTF-8"?> > +<!-- > +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. > +--> > +<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> > + <property key="PriCatCompanyName"> > + <value xml:lang="en">OFBiz: PriCat Demo</value> > + <value xml:lang="zh">OFBizï¼ä»·ç®è¡¨</value> > + </property> > + <property key="PriCatApplication"> > + <value xml:lang="en">PriCat</value> > + <value xml:lang="zh">ä»·ç®è¡¨</value> > + </property> > + <property key="PriCatDemoCompanyName"> > + <value xml:lang="en">OFBiz: PriCat Demo</value> > + <value xml:lang="zh">OFBizï¼ä»·ç®è¡¨æ¼ç¤º</value> > + </property> > + <property key="PriCatDemoApplication"> > + <value xml:lang="en">PriCat Demo</value> > + <value xml:lang="zh">ä»·ç®è¡¨æ¼ç¤º</value> > + </property> > + <property key="PriCatDemoCountDown"> > + <value xml:lang="en">HTML Report Demo - Count Down</value> > + <value xml:lang="zh">页é¢è¾åºæ¼ç¤º - å计æ°</value> > + </property> > + <property key="PriCatDemoCountUp"> > + <value xml:lang="en">HTML Report Demo - Count Up</value> > + <value xml:lang="zh">页é¢è¾åºæ¼ç¤º - æ£è®¡æ°</value> > + </property> > + <property key="PriCatDemoParseSamplePricat"> > + <value xml:lang="en">PriCat Demo - Parse PriCat</value> > + <value xml:lang="zh">ä»·ç®è¡¨æ¼ç¤º - 解æä»·ç®è¡¨</value> > + </property> > + <property key="PriCatDemoMainPage"> > + <value xml:lang="en">PriCat Demo Main Page</value> > + <value xml:lang="zh">ä»·ç®è¡¨æ¼ç¤ºé¦é¡µ</value> > + </property> > + <property key="PricatDemoMessage"> > + <value xml:lang="en">PriCat Demo includes 2 HTML Report Demo and 1 Parse PriCat File Demo.</value> > + <value xml:lang="zh">ä»·ç®è¡¨æ¼ç¤ºå å«äº2个页é¢è¾åºæ¼ç¤ºå1个解æä»·ç®è¡¨æ件çæ¼ç¤ºã</value> > + </property> > + <property key="ParseSamplePricatDemo"> > + <value xml:lang="en">Parse Sample PriCat Demo</value> > + <value xml:lang="zh">æ¼ç¤ºè§£ææ ·ä¾ä»·ç®è¡¨æ件</value> > + </property> > + <property key="SamplePricatTemplate"> > + <value xml:lang="en">Sample PriCat Template</value> > + <value xml:lang="zh">ä»·ç®è¡¨æ ·ä¾æ¨¡æ¿</value> > + </property> > + <property key="DownloadPricatTemplate"> > + <value xml:lang="en">Download PriCat Template</value> > + <value xml:lang="zh">ä¸è½½ä»·ç®è¡¨æ¨¡æ¿</value> > + </property> > + <property key="UploadPricat"> > + <value xml:lang="en">Upload PriCat</value> > + <value xml:lang="zh">ä¸ä¼ ä»·ç®è¡¨</value> > + </property> > + <property key="ParseSamplePricat"> > + <value xml:lang="en">Parse Sample PriCat</value> > + <value xml:lang="zh">解ææ ·ä¾ä»·ç®è¡¨</value> > + </property> > + <property key="ExcelTemplateType"> > + <value xml:lang="en">Template Type</value> > + <value xml:lang="zh">模æ¿ç±»å</value> > + </property> > + <property key="SamplePricatType"> > + <value xml:lang="en">Sample PriCat</value> > + <value xml:lang="zh">æ ·ä¾ä»·ç®è¡¨</value> > + </property> > + <property key="OFBizPricatType"> > + <value xml:lang="en">OFBiz Type</value> > + <value xml:lang="zh">OFBizç±»å</value> > + </property> > + <property key="StartStoreExcel"> > + <value xml:lang="en">Storing your upload file to server ... </value> > + <value xml:lang="zh">æ£å¨æä¸ä¼ æ件åå°æå¡å¨ä¸ ... </value> > + </property> > + <property key="NoFileUploaded"> > + <value xml:lang="en">no file uploaded!</value> > + <value xml:lang="zh">没æä¸ä¼ æ件ï¼</value> > + </property> > + <property key="StartParsePricat"> > + <value xml:lang="en">Start parsing the uploaded file ...</value> > + <value xml:lang="zh">å¼å§è§£æä¸ä¼ çæ件 ...</value> > + </property> > + <property key="PricatParseCompleted"> > + <value xml:lang="en">... parsing completed</value> > + <value xml:lang="zh">... å®æ解æ</value> > + </property> > + <property key="CurrentUserLoginNoFacility"> > + <value xml:lang="en">Cannot find any facility for current user(userLoginId: [{0}]).</value> > + <value xml:lang="zh">没ææ¾å°å½åç¨æ·ï¼userLoginId: [{0}]ï¼çä»»ä½ä¸ä¸ªä»åºã</value> > + </property> > + <property key="GetCurrentUserLoginFacility"> > + <value xml:lang="en">Getting facilities of current user ... </value> > + <value xml:lang="zh">æ£å¨è·å¾å½åç¨æ·çä»åº ... </value> > + </property> > + <property key="FacilityFoundForCurrentUserLogin"> > + <value xml:lang="en">({0}) Facility found for current user: {1}[{2}].</value> > + <value xml:lang="zh">({0}) æ¾å°å½åç¨æ·çä»åºï¼{1}[{2}]ã</value> > + </property> > + <property key="FacilityNotBelongToYou"> > + <value xml:lang="en">Facility {0}[{1}] does not belong to you. Please use a facility of yours.</value> > + <value xml:lang="zh">ä»åº{0}[{1}]ä¸å±äºä½ ï¼è¯·æ¹ä¸ºä½ èªå·±çä»åºã</value> > + </property> > + <property key="ExcelTemplateTypeSelected"> > + <value xml:lang="en">The selected Excel template type: </value> > + <value xml:lang="zh">éæ©çExcel模æ¿ç±»åï¼</value> > + </property> > + <property key="FacilityIdSelected"> > + <value xml:lang="en">The selected facility Id: </value> > + <value xml:lang="zh">éæ©çä»åºç¼å·ï¼</value> > + </property> > + <property key="ParsePricatFileStatement"> > + <value xml:lang="en">Loading file {0} ... </value> > + <value xml:lang="zh">æ£å¨è¯»å ¥æ件{0} ... </value> > + </property> > + <property key="PricatSuggestion"> > + <value xml:lang="en">Please make sure your Excel file is in format of Microsoft Excel 2007 and later. And then try again.</value> > + <value xml:lang="zh">è¯·ç¡®è®¤ä½ çExcelæä»¶æ ¼å¼æ¯å¾®è½¯Office 2007ææ´æ°çæ¬çï¼ç¶åéè¯ä¸ä¸ã</value> > + </property> > + <property key="CheckPricatHasSheet"> > + <value xml:lang="en">Checking whether your file contains at least a sheet ... </value> > + <value xml:lang="zh">æ£å¨æ£æ¥ä½ çæ件æ¯å¦å å«è³å°ä¸ä¸ªè¡¨å ... </value> > + </property> > + <property key="PricatVersionNotSupport"> > + <value xml:lang="en">Pricat Version {0} is not supported.</value> > + <value xml:lang="zh">è¿ä¸è½æ¯æè¿ä¸ªä»·æ ¼åç±»ççæ¬{0}ã</value> > + </property> > + <property key="PricatTableOnlyParse1stSheet"> > + <value xml:lang="en">Only the 1st sheet will be parsed.</value> > + <value xml:lang="zh">åªè§£æ第ä¸å¼ 表ã</value> > + </property> > + <property key="PricatTableNoSheet"> > + <value xml:lang="en">There's no sheet in the PriCat file.</value> > + <value xml:lang="zh">ä»·æ ¼åç±»æ件ä¸æ²¡æ表ã</value> > + </property> > + <property key="PricatTableRows"> > + <value xml:lang="en">Sheet [{2}] has {0} rows of header and {1} rows of data.</value> > + <value xml:lang="zh">表å[{2}]æ{0}è¡è¡¨å¤´å{1}è¡æ°æ®ã</value> > + </property> > + <property key="PricatTableRow"> > + <value xml:lang="en">Sheet [{0}] has only 1 row of data.</value> > + <value xml:lang="zh">表å[{0}]åªæä¸è¡æ°æ®ã</value> > + </property> > + <property key="ExcelTableNoRow"> > + <value xml:lang="en">There's no row in sheet [{0}].</value> > + <value xml:lang="zh">表å[{0}]ä¸æ²¡ææ°æ®ã</value> > + </property> > + <property key="ExcelTableColumnNumberNotMatch"> > + <value xml:lang="en">The sheet has {0} columns, it's not the same as sample sheet's {1}.</value> > + <value xml:lang="zh">表åæ{0}åï¼ä¸æ ·ä¾è¡¨åç{1}åä¸åã</value> > + </property> > + <property key="ExcelTableColumnNotMatch"> > + <value xml:lang="en">The column {0} has a name {1}, it's not identical to {2}.</value> > + <value xml:lang="zh">å{0}çååæ¯{1}ï¼åºæ¯{2}ã</value> > + </property> > + <property key="ExcelParsingRow"> > + <value xml:lang="en">({0}) parsing {1} ...</value> > + <value xml:lang="zh">({0}) æ£å¨è§£æ {1} ...</value> > + </property> > + <property key="StartCheckPricatVersion"> > + <value xml:lang="en">Check PriCat file's version ... </value> > + <value xml:lang="zh">æ£æ¥ä»·æ ¼åç±»æ件ççæ¬ ... </value> > + </property> > + <property key="StartCheckCurrencyId"> > + <value xml:lang="en">Checking currencyId ... </value> > + <value xml:lang="zh">æ£å¨æ£æ¥å¸ç§ ... </value> > + </property> > + <property key="CurrencyIdRequired"> > + <value xml:lang="en">CurrencyId is required. Please set it at row 3 column 2.</value> > + <value xml:lang="zh">å¿ é¡»è®¾ç½®è´§å¸ã请设置å¨ç¬¬ä¸è¡ã第äºåã</value> > + </property> > + <property key="CurrencyIdIs"> > + <value xml:lang="en">CurrencyId is {0}</value> > + <value xml:lang="zh">è´§å¸æ¯{0}</value> > + </property> > + <property key="CurrencyIdNotFound"> > + <value xml:lang="en">CurrencyId {0} cannot be found in this system.</value> > + <value xml:lang="zh">æ¬ç³»ç»ä¸æ¾ä¸å°è´§å¸{0}ã</value> > + </property> > + <property key="CurrencyIdNotCurrency"> > + <value xml:lang="en">{0} is not a currency in this system.</value> > + <value xml:lang="zh">{0}å¨è¿ä¸ªç³»ç»éä¸æ¯è´§å¸ã</value> > + </property> > + <property key="HeaderContainsError"> > + <value xml:lang="en">There are errors in PriCat header. Please correct it and upload it again.</value> > + <value xml:lang="zh">表头ä¸æé误ï¼è¯·ä¿®æ¹åéæ°ä¸ä¼ ã</value> > + </property> > + <property key="PricatNoDataRows"> > + <value xml:lang="en">There are no data in your PriCat file, no further operation is required.</value> > + <value xml:lang="zh">ä½ çä»·æ ¼åç±»æ件ä¸æ²¡ææ°æ®ï¼ä¸ååæ°æ®è§£æäºã</value> > + </property> > + <property key="DataContainsError"> > + <value xml:lang="en">There are errors in data of your PriCat file. Please correct it and upload it again.</value> > + <value xml:lang="zh">ä»·æ ¼åç±»æ件çæ°æ®ä¸æé误ï¼è¯·ä¿®æ¹åéæ°ä¸ä¼ ã</value> > + </property> > + <property key="CellTypeNotString"> > + <value xml:lang="en">The type of cell[{0}, {1}] is not String. The cell value will be changed to String type.</value> > + <value xml:lang="zh">åå æ ¼[{0}, {1}]ä¸æ¯å符类åãå°æè¿ä¸ªåå æ ¼çå¼è½¬ä¸ºå符类åã</value> > + </property> > + <property key="CellTypeNotNumeric"> > + <value xml:lang="en">The type of cell[{0}, {1}] is not numeric. The cell value will be changed to numeric type.</value> > + <value xml:lang="zh">åå æ ¼[{0}, {1}]ä¸æ¯æ°åç±»åãå°æè¿ä¸ªåå æ ¼çå¼è½¬ä¸ºæ°åç±»åã</value> > + </property> > + <property key="ErrorParseValueToNumeric"> > + <value xml:lang="en">Unable to parse the value to a numeric.</value> > + <value xml:lang="zh">æ æ³æè¿ä¸ªåå æ ¼çå¼è½¬ä¸ºæ°åã</value> > + </property> > + <property key="StartCheckHeaderColNum"> > + <value xml:lang="en">Checking whether the number of header columns matches the template's of version {0} ... </value> > + <value xml:lang="zh">æ£å¨æ£æ¥è¡¨å¤´çåæ°æ¯å¦ä¸çæ¬{0}ç模æ¿ä¸è´ ... </value> > + </property> > + <property key="HeaderColNumNotMatch"> > + <value xml:lang="en">The number of columns of {0} template header columns, column number {1} and imported template columns are not consistent ... </value> > + <value xml:lang="zh">模æ¿è¡¨å¤´çåæ°{0}å,ä¸å¯¼å ¥ç模æ¿çåæ°{1}åä¸ä¸è´ ... </value> > + </property> > + <property key="StartCheckHeaderColLabel"> > + <value xml:lang="en">Checking whether the header labels match the template's of version {0} ... </value> > + <value xml:lang="zh">æ£å¨æ£æ¥è¡¨å¤´çæåæ¯å¦ä¸çæ¬{0}ç模æ¿ä¸è´ ... </value> > + </property> > + <property key="HeaderColLabelNotMatch"> > + <value xml:lang="en">The lable of row {0} colum {1} is [{2}], it does not match [{3}] as expected.</value> > + <value xml:lang="zh">è¡{0}å{1}çæåæ¯[{2}]ï¼ä¸ææç[{3}]ä¸ä¸è´ã</value> > + </property> > + <property key="HeaderColNumShortThanRequired"> > + <value xml:lang="en">Table header column number less than the required {0}</value> > + <value xml:lang="zh">表头åæ°å°äºè¦æ±ç{0}å</value> > + </property> > + <property key="UseHeaderColNum"> > + <value xml:lang="en">the first {0} column labels will be checked</value> > + <value xml:lang="zh">å°æ£æ¥è¡¨å¤´çå{0}åçæ ç¾</value> > + </property> > + <property key="WriteCommentsBackToExcel"> > + <value xml:lang="en">Writing errors as commonts to your Excel file ... </value> > + <value xml:lang="zh">æ£å¨æé误信æ¯ä½ä¸ºæ¹æ³¨åå°ä½ çExcelæ件é ... </value> > + </property> > + <property key="CLEANUP_LOGANDEXCEL_BEGIN"> > + <value xml:lang="en">Start to clean log and commented excel files</value> > + <value xml:lang="zh">å¼å§æ¸ çæ¥å¿åæ¹æ³¨è¿çExcelæ件</value> > + </property> > + <property key="HistoryLessThan"> > + <value xml:lang="en">history entries less than {0}</value> > + <value xml:lang="zh">åå²è®°å½å°äº{0}æ¡</value> > + </property> > + <property key="HistoryEntryToRemove"> > + <value xml:lang="en">{0} entries to remove</value> > + <value xml:lang="zh">è¦å é¤{0}æ¡è®°å½</value> > + </property> > + <property key="FacilityNameNotMatchId"> > + <value xml:lang="en">In the system, the name of facilityId[{0}] is [{1}], NOT [{2}]. Please correct it and import again.</value> > + <value xml:lang="zh">ç³»ç»ä¸ï¼ä»åºæ è¯[{0}]çå称æ¯[{1}]ï¼ä¸æ¯[{2}]ã请修æ¹åéæ°å¯¼å ¥ã</value> > + </property> > + <property key="ExcelEmptyRow"> > + <value xml:lang="en">empty row</value> > + <value xml:lang="zh">空è¡</value> > + </property> > + > + <property key="REPORT_EXCEPTION"> > + <value xml:lang="en">Exception: </value> > + <value xml:lang="zh">æå¤é误ï¼</value> > + </property> > + <property key="DIALOG_BUTTON_OK"> > + <value xml:lang="en">OK</value> > + <value xml:lang="zh">ç¡®å®</value> > + </property> > + <property key="DIALOG_BUTTON_CANCEL"> > + <value xml:lang="en">Cancel</value> > + <value xml:lang="zh">åæ¶</value> > + </property> > + <property key="DIALOG_BUTTON_EDIT"> > + <value xml:lang="en">Edit</value> > + <value xml:lang="zh">ç¼è¾</value> > + </property> > + <property key="DIALOG_BUTTON_DISCARD"> > + <value xml:lang="en">Discard</value> > + <value xml:lang="zh">æ¾å¼</value> > + </property> > + <property key="DIALOG_BUTTON_CLOSE"> > + <value xml:lang="en">Close</value> > + <value xml:lang="zh">å ³é</value> > + </property> > + <property key="DIALOG_BUTTON_ADVANCE"> > + <value xml:lang="en">Advance</value> > + <value xml:lang="zh">é«çº§</value> > + </property> > + <property key="DIALOG_BUTTON_SET"> > + <value xml:lang="en">Set</value> > + <value xml:lang="zh">设置</value> > + </property> > + <property key="DIALOG_BUTTON_BACK"> > + <value xml:lang="en">Back</value> > + <value xml:lang="zh">è¿å</value> > + </property> > + <property key="DIALOG_BUTTON_CONTINUE"> > + <value xml:lang="en">Continue</value> > + <value xml:lang="zh">继ç»</value> > + </property> > + <property key="DIALOG_BUTTON_DETAIL"> > + <value xml:lang="en">Detail</value> > + <value xml:lang="zh">详ç»</value> > + </property> > + <property key="DIALOG_BUTTON_DOWNLOAD"> > + <value xml:lang="en">Download</value> > + <value xml:lang="zh">ä¸è½½</value> > + </property> > + <property key="FORMAT_DEFAULT"> > + <value xml:lang="en">({0}) This is default format.</value> > + <value xml:lang="zh">({0}) è¿æ¯ç¼ºçæ ¼å¼ã</value> > + </property> > + <property key="FORMAT_WARNING"> > + <value xml:lang="en">({0}) This is warning format.</value> > + <value xml:lang="zh">({0}) è¿æ¯è¦åæ ¼å¼ã</value> > + </property> > + <property key="FORMAT_HEADLINE"> > + <value xml:lang="en">({0}) This is headline format.</value> > + <value xml:lang="zh">({0}) è¿æ¯æ é¢æ ¼å¼ã</value> > + </property> > + <property key="FORMAT_NOTE"> > + <value xml:lang="en">({0}) This is note format.</value> > + <value xml:lang="zh">({0}) è¿æ¯è®°å½æ ¼å¼ã</value> > + </property> > + <property key="FORMAT_OK"> > + <value xml:lang="en">({0}) This is OK format.</value> > + <value xml:lang="zh">({0}) è¿æ¯æ£ç¡®æ¶çæ ¼å¼ã</value> > + </property> > + <property key="FORMAT_ERROR"> > + <value xml:lang="en">({0}) This is error format.</value> > + <value xml:lang="zh">({0}) è¿æ¯é误æ¶çæ ¼å¼ã</value> > + </property> > + <property key="FORMAT_THROWABLE"> > + <value xml:lang="en">({0}) This is throwable format.</value> > + <value xml:lang="zh">({0}) è¿æ¯æåºé误çæ ¼å¼ã</value> > + </property> > + <property key="START_COUNT_DOWN"> > + <value xml:lang="en">Start counting down ...</value> > + <value xml:lang="zh">å¼å§åæ° ...</value> > + </property> > + <property key="COUNT_COMPLETED"> > + <value xml:lang="en">... counting completed.</value> > + <value xml:lang="zh">... å®æ计æ°ã</value> > + </property> > + <property key="START_COUNT_UP"> > + <value xml:lang="en">String counting up ...</value> > + <value xml:lang="zh">å¼å§æ£è®¡æ° ...</value> > + </property> > + <property key="RPT_ERROR"> > + <value xml:lang="en">Error: </value> > + <value xml:lang="zh">é误ï¼</value> > + </property> > + <property key="RPT_ERROR_DETAILS"> > + <value xml:lang="en">Details: </value> > + <value xml:lang="zh">详ç»ï¼</value> > + </property> > + <property key="ParseExcelDemo"> > + <value xml:lang="en">Click here to see Import Excel demo</value> > + <value xml:lang="zh">ç¹å»è¿éçå¯¼å ¥Excelæ¼ç¤º</value> > + </property> > + <property key="StartParseExcel"> > + <value xml:lang="en">Start parsing a sample excel file ...</value> > + <value xml:lang="zh">å¼å§è§£æä¸ä¸ªExcelæ ·ä¾æ件 ...</value> > + </property> > + <property key="ExcelParseCompleted"> > + <value xml:lang="en">... parsing completed</value> > + <value xml:lang="zh">... å®æ解æ</value> > + </property> > + <property key="ExcelTableOnlyParse1stSheet"> > + <value xml:lang="en">Only the 1st sheet will be parsed.</value> > + <value xml:lang="zh">åªè§£æ第ä¸å¼ 表ã</value> > + </property> > + <property key="ExcelTableNoSheet"> > + <value xml:lang="en">There's no sheet in the excel.</value> > + <value xml:lang="zh">Excelä¸æ²¡æ表ã</value> > + </property> > + <property key="ExcelTableRows"> > + <value xml:lang="en">Sheet {1} has {0} rows.</value> > + <value xml:lang="zh">表å{1}æ{0}è¡æ°æ®ã</value> > + </property> > + <property key="ExcelTableRow"> > + <value xml:lang="en">Sheet {0} has only 1 row.</value> > + <value xml:lang="zh">表å{0}åªæä¸è¡æ°æ®ã</value> > + </property> > + <property key="ExcelTableNoRow"> > + <value xml:lang="en">There's no row in sheet {0}.</value> > + <value xml:lang="zh">表å{0}ä¸æ²¡ææ°æ®ã</value> > + </property> > + <property key="ExcelTableColumnNumberNotMatch"> > + <value xml:lang="en">The sheet has {0} columns, it's not the same as sample sheet's {1}.</value> > + <value xml:lang="zh">表åæ{0}åï¼ä¸æ ·ä¾è¡¨åç{1}åä¸åã</value> > + </property> > + <property key="ExcelTableColumnNotMatch"> > + <value xml:lang="en">The column {0} has a name {1}, it's not identical to {2}.</value> > + <value xml:lang="zh">å{0}çååæ¯{1}ï¼åºæ¯{2}ã</value> > + </property> > + <property key="ExcelParsingRow"> > + <value xml:lang="en">({0}) parsing {1} ...</value> > + <value xml:lang="zh">({0}) æ£å¨è§£æ {1} ...</value> > + </property> > + <property key="ParseExcelEncoding"> > + <value xml:lang="en"> Using {0} to parsing the excel file.</value> > + <value xml:lang="zh"> æ£å¨ä½¿ç¨{0}解æExcelæ件ã</value> > + </property> > + <property key="ParseExcelToolStatement"> > + <value xml:lang="en"> Using {0} to parsing the {1} format excel file...</value> > + <value xml:lang="zh"> æ£å¨ä½¿ç¨{0}解æ{1}æ ¼å¼çExcelæ件...</value> > + </property> > + <property key="ok"> > + <value xml:lang="en">ok</value> > + <value xml:lang="zh">å®æ</value> > + </property> > + <property key="error"> > + <value xml:lang="en">error</value> > + <value xml:lang="zh">åºéäº</value> > + </property> > + <property key="skipped"> > + <value xml:lang="en">skipped</value> > + <value xml:lang="zh">è·³è¿</value> > + </property> > + > + <property key="ExcelImportHistoryList"> > + <value xml:lang="en">Excel Import History</value> > + <value xml:lang="zh">Excelå¯¼å ¥æä½åå²è®°å½</value> > + </property> > + <property key="OnlyYourOwnImportHistoryDisplayed"> > + <value xml:lang="en">(Only current login user's history can be displayed)</value> > + <value xml:lang="zh">ï¼ä» è½æ¾ç¤ºå½åç¨æ·çå¯¼å ¥æä½åå²è®°å½ï¼</value> > + </property> > + <property key="SerialNumber"> > + <value xml:lang="en">No.</value> > + <value xml:lang="zh">åºå·</value> > + </property> > + <property key="Filename"> > + <value xml:lang="en">Filename</value> > + <value xml:lang="zh">æ件å</value> > + </property> > + <property key="FromDate"> > + <value xml:lang="en">Start Time</value> > + <value xml:lang="zh">å¼å§æ¶é´</value> > + </property> > + <property key="ThruDate"> > + <value xml:lang="en">End Time</value> > + <value xml:lang="zh">ç»ææ¶é´</value> > + </property> > + <property key="ThruReasonId"> > + <value xml:lang="en">End Reason</value> > + <value xml:lang="zh">ç»æåå </value> > + </property> > + <property key="ImportStatus"> > + <value xml:lang="en">Import Status</value> > + <value xml:lang="zh">å¯¼å ¥ç¶æ</value> > + </property> > + <property key="Actions"> > + <value xml:lang="en">Actions</value> > + <value xml:lang="zh">æä½</value> > + </property> > + <property key="ExcelImportTipNoData"> > + <value xml:lang="en">No excel import history data.</value> > + <value xml:lang="zh">没æExcelå¯¼å ¥åå²è®°å½</value> > + </property> > + <property key="EXCEL_IMPORTING"> > + <value xml:lang="en">Importing</value> > + <value xml:lang="zh">æ£å¨å¯¼å ¥</value> > + </property> > + <property key="EXCEL_IMPORTED"> > + <value xml:lang="en">Imported</value> > + <value xml:lang="zh">å·²å¯¼å ¥</value> > + </property> > + <property key="EXCEL_IMPORT_SUCCESS"> > + <value xml:lang="en">Success</value> > + <value xml:lang="zh">æå</value> > + </property> > + <property key="EXCEL_IMPORT_STOPPED"> > + <value xml:lang="en">Stopped by user</value> > + <value xml:lang="zh">ç¨æ·ç»æ¢äºå¯¼å ¥</value> > + </property> > + <property key="EXCEL_IMPORT_ERROR"> > + <value xml:lang="en">Stopped by error</value> > + <value xml:lang="zh">å åºéèåæ¢äºå¯¼å ¥</value> > + </property> > + <property key="EXCEL_IMPORT_QUEST"> > + <value xml:lang="en">Data error found</value> > + <value xml:lang="zh">æ°æ®ä¸æé误</value> > + </property> > + <property key="ViewExcelImportLogContent"> > + <value xml:lang="en">View log content</value> > + <value xml:lang="zh">æµè§æ¥å¿å 容</value> > + </property> > + <property key="DownloadCommentedExcel"> > + <value xml:lang="en">Download excel</value> > + <value xml:lang="zh">ä¸è½½Excel</value> > + </property> > + <property key="ViewExcelImportHistory"> > + <value xml:lang="en">View Import History</value> > + <value xml:lang="zh">å¯¼å ¥æä½åå²è®°å½</value> > + </property> > + <property key="ViewPricatLog"> > + <value xml:lang="en">View</value> > + <value xml:lang="zh">æµè§</value> > + </property> > + <property key="DownloadCommentedPricat"> > + <value xml:lang="en">Download</value> > + <value xml:lang="zh">ä¸è½½</value> > + </property> > + > + <property key="ReasonOK"> > + <value xml:lang="en">OK</value> > + </property> > + <property key="ReasonStopped"> > + <value xml:lang="en">[S]</value> > + </property> > + <property key="ReasonError"> > + <value xml:lang="en">[E]</value> > + </property> > + <property key="ReasonWarning"> > + <value xml:lang="en">[W]</value> > + </property> > +</resource> > > Added: ofbiz/trunk/specialpurpose/pricat/config/pricat.properties > URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/config/pricat.properties?rev=1770621&view=auto > ============================================================================== > --- ofbiz/trunk/specialpurpose/pricat/config/pricat.properties (added) > +++ ofbiz/trunk/specialpurpose/pricat/config/pricat.properties Mon Nov 21 08:07:57 2016 > @@ -0,0 +1,24 @@ > +############################################################################### > +# 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. > +############################################################################### > + > +# the latest pricat version to parse and download > +pricat.latest.version=V1.1 > + > +# the max number of pricat history files to keep > +pricat.history.max.filenumber=20 > > Added: ofbiz/trunk/specialpurpose/pricat/data/PricatData.xml > URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/data/PricatData.xml?rev=1770621&view=auto > ============================================================================== > --- ofbiz/trunk/specialpurpose/pricat/data/PricatData.xml (added) > +++ ofbiz/trunk/specialpurpose/pricat/data/PricatData.xml Mon Nov 21 08:07:57 2016 > @@ -0,0 +1,34 @@ > +<?xml version="1.0" encoding="UTF-8"?> > +<!-- > +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. > +--> > +<entity-engine-xml> > + <!-- Enumeration for thruReasonId of ExcelImportHistory entity --> > + <EnumerationType description="Excel import thru reasons" enumTypeId="EXCEL_IMPORT_THRU" hasTable="N" parentTypeId=""/> > + > + <Enumeration enumId="EXCEL_IMPORT_SUCCESS" enumCode="EXCEL_IMPORT_SUCCESS" description="Excel Imported Successfully" sequenceId="01" enumTypeId="EXCEL_IMPORT_THRU"/> > + <Enumeration enumId="EXCEL_IMPORT_STOPPED" enumCode="EXCEL_IMPORT_STOPPED" description="Excel Imported Stopped by user" sequenceId="02" enumTypeId="EXCEL_IMPORT_THRU"/> > + <Enumeration enumId="EXCEL_IMPORT_ERROR" enumCode="EXCEL_IMPORT_ERROR" description="Excel Imported Exits Errorly" sequenceId="03" enumTypeId="EXCEL_IMPORT_THRU"/> > + <Enumeration enumId="EXCEL_IMPORT_QUEST" enumCode="EXCEL_IMPORT_QUEST" description="Excel Imported Has Error Messages" sequenceId="04" enumTypeId="EXCEL_IMPORT_THRU"/> > + > + <!-- Enumeration for statusId of ExcelImportHistory entity --> > + <EnumerationType description="Excel import status" enumTypeId="EXCEL_IMPORT_STATUS" hasTable="N" parentTypeId=""/> > + > + <Enumeration enumId="EXCEL_IMPORTING" enumCode="EXCEL_IMPORTING" description="Excel is being imported in progress" sequenceId="01" enumTypeId="EXCEL_IMPORT_STATUS"/> > + <Enumeration enumId="EXCEL_IMPORTED" enumCode="EXCEL_IMPORTED" description="Excel has been imported" sequenceId="02" enumTypeId="EXCEL_IMPORT_STATUS"/> > +</entity-engine-xml> > > Added: ofbiz/trunk/specialpurpose/pricat/entitydef/entitymodel.xml > URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/entitydef/entitymodel.xml?rev=1770621&view=auto > ============================================================================== > --- ofbiz/trunk/specialpurpose/pricat/entitydef/entitymodel.xml (added) > +++ ofbiz/trunk/specialpurpose/pricat/entitydef/entitymodel.xml Mon Nov 21 08:07:57 2016 > @@ -0,0 +1,48 @@ > +<?xml version="1.0" encoding="UTF-8"?> > +<!-- > +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. > +--> > +<entitymodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > + xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/entitymodel.xsd"> > + > + <entity entity-name="ExcelImportHistory" > + package-name="org.ofbiz.product.catalog" > + title="Excel Import History Entity"> > + <field name="userLoginId" type="id-vlong-ne"></field> > + <field name="sequenceNum" type="numeric"></field> > + <field name="fileName" type="value"></field> > + <field name="fromDate" type="date-time"></field> > + <field name="thruDate" type="date-time"></field> > + <field name="thruReasonId" type="id-ne"></field> > + <field name="statusId" type="id-ne"></field> > + <field name="threadName" type="name"></field> > + <field name="logFileName" type="value"></field> > + <prim-key field="userLoginId"/> > + <prim-key field="sequenceNum"/> > + <relation rel-entity-name="UserLogin" type="one" fk-name="EXCELIMPORT_USERLOGIN"> > + <key-map field-name="userLoginId"/> > + </relation> > + <relation rel-entity-name="Enumeration" type="one" fk-name="EXCELIMPORT_STATUS"> > + <key-map field-name="statusId" rel-field-name="enumId"/> > + </relation> > + <relation rel-entity-name="Enumeration" type="one" fk-name="EXCELIMPORT_REASON"> > + <key-map field-name="thruReasonId" rel-field-name="enumId"/> > + </relation> > + </entity> > + > +</entitymodel> > > Added: ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImport.groovy > URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImport.groovy?rev=1770621&view=auto > ============================================================================== > --- ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImport.groovy (added) > +++ ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImport.groovy Mon Nov 21 08:07:57 2016 > @@ -0,0 +1,24 @@ > +/* > + * 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. > + */ > +import org.apache.ofbiz.base.util.*; > + > +module = "FindMyExcelImport.groovy"; > + > +data = delegator.findByAnd("ExcelImportHistory", [userLoginId : userLogin.userLoginId], ["sequenceNum DESC"], false); > +context.data = data; > > Added: ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImportLog.groovy > URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImportLog.groovy?rev=1770621&view=auto > ============================================================================== > --- ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImportLog.groovy (added) > +++ ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImportLog.groovy Mon Nov 21 08:07:57 2016 > @@ -0,0 +1,53 @@ > +/* > + * 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. > + */ > +import org.apache.ofbiz.base.util.*; > +import java.io.FileInputStream; > + > +module = "FindMyExcelImport.groovy"; > + > +context.borderStyle = "2px inset /*begin-color ThreeDHighlight*/#ffffff/*end-color*/"; > +context.borderSimpleStyle = "2px solid /*begin-color ThreeDFace*/#f0f0f0/*end-color*/"; > + > +sequenceNum = request.getParameter("sequenceNum"); > + > +if (sequenceNum == null) { > + context.logFileContent = "No sequenceNum parameter found."; > + return; > +} > + > +historyEntry = delegator.findOne("ExcelImportHistory", [sequenceNum : Long.valueOf(sequenceNum), userLoginId : userLogin.userLoginId], false); > +if (historyEntry == null) { > + context.logFileContent = "No import history found."; > + return; > +} > + > +logFile = FileUtil.getFile("runtime/pricat/" + userLogin.userLoginId + "/" + sequenceNum + ".log"); > +if (!logFile.exists()) { > + context.logFileContent = "No log file found."; > +} > + > +FileInputStream fis = new FileInputStream(logFile); > +InputStreamReader isr = new InputStreamReader(fis); > +BufferedReader br = new BufferedReader(isr); > +logFileContent = ""; > +while((s = br.readLine())!=null){ > + logFileContent += s; > +} > +context.logFileContent = logFileContent; > + > > Added: ofbiz/trunk/specialpurpose/pricat/ofbiz-component.xml > URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/ofbiz-component.xml?rev=1770621&view=auto > ============================================================================== > --- ofbiz/trunk/specialpurpose/pricat/ofbiz-component.xml (added) > +++ ofbiz/trunk/specialpurpose/pricat/ofbiz-component.xml Mon Nov 21 08:07:57 2016 > @@ -0,0 +1,46 @@ > +<?xml version="1.0" encoding="UTF-8"?> > +<!-- > +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. > +--> > + > +<ofbiz-component name="pricat" enabled="true" > + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > + xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/ofbiz-component.xsd"> > + <resource-loader name="main" type="component"/> > + <classpath type="dir" location="config"/> > + > + <!-- entity resources: model(s), eca(s), group, and data definitions --> > + <entity-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel.xml"/> > + <entity-resource type="data" reader-name="seed" loader="main" location="data/PricatData.xml"/> > + > + <webapp name="pricat" > + title="PriCat" > + server="default-server" > + location="webapp/pricat" > + app-bar-display="false" > + base-permission="OFBTOOLS,CATALOG" > + mount-point="/pricat" /> > + > + <webapp name="pricatdemo" > + title="PriCat Demo" > + server="default-server" > + location="webapp/pricatdemo" > + app-bar-display="false" > + base-permission="OFBTOOLS,EXAMPLE" > + mount-point="/pricatdemo" /> > +</ofbiz-component> > > Added: ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractHtmlReport.java > URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractHtmlReport.java?rev=1770621&view=auto > ============================================================================== > --- ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractHtmlReport.java (added) > +++ ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractHtmlReport.java Mon Nov 21 08:07:57 2016 > @@ -0,0 +1,144 @@ > +/******************************************************************************* > + * 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. > + *******************************************************************************/ > +package org.apache.ofbiz.htmlreport; > + > +import java.io.IOException; > +import javax.servlet.ServletException; > +import javax.servlet.http.HttpServletRequest; > +import javax.servlet.http.HttpServletResponse; > +import javax.servlet.jsp.JspException; > + > +import org.apache.ofbiz.htmlreport.util.ReportStringUtil; > + > +/** > + * HTML report output to be used for database create tables / drop tables operations. > + * > + */ > +public abstract class AbstractHtmlReport extends HtmlReport { > + > + public static final String module = AbstractHtmlReport.class.getName(); > + > + public final static String THREAD_TYPE = "thread_type"; > + > + public final static String RUN_CREATETABLE_SCRIPT = "runcreatetablescript"; > + > + public final static String RUN_DROPTABLE_SCRIPT = "rundroptablescript"; > + > + public final static String FILE_REPORT_OUTPUT = "specialpurpose/pricat/webapp/pricat/ftl/report.ftl"; > + > + /** > + * Constructs a new report using the provided locale for the output language. > + * > + * @param request HttpServletRequest > + * @param response HttpServletResponse > + */ > + public AbstractHtmlReport(HttpServletRequest request, HttpServletResponse response) { > + this(request, response, false, false); > + } > + > + /** > + * Constructs a new report using the provided locale for the output language. > + * > + * @param request HttpServletRequest > + * @param response HttpServletResponse > + * @param writeHtml if <code>true</code>, this report should generate HTML instead of JavaScript output > + * @param isTransient If set to <code>true</code> nothing is kept in memory > + */ > + public AbstractHtmlReport(HttpServletRequest request, HttpServletResponse response, boolean writeHtml, boolean isTransient) { > + super(request, response, writeHtml, isTransient); > + } > + > + /** > + * Prepare display an html report.<p> > + * > + * @throws JspException if dialog actions fail > + * @throws IOException > + * @throws ServletException > + * @throws TemplateException > + * @throws IOException > + */ > + public void prepareDisplayReport(HttpServletRequest request, HttpServletResponse response, String name, String dialogUri) throws IOException { > + > + if (ReportStringUtil.isNotEmpty(dialogUri)) { > + setDialogRealUri(request, dialogUri); > + } > + > + String action = getParamAction(request); > + if (action == null) action = ""; > + if (action.equals("reportend") || action.equals("cancel")) { > + setParamAction("reportend"); > + } else if (action.equals("reportupdate")) { > + setParamAction("reportupdate"); > + } else { > + InterfaceReportThread thread = initializeThread(request, response, name); > + thread.start(); > + setParamAction("reportbegin"); > + setParamThread(thread.getUUID().toString()); > + } > + } > + > + /** > + * Initializes the report thread to use for this report.<p> > + * > + * @return the reported thread to use for this report. > + */ > + public abstract InterfaceReportThread initializeThread(HttpServletRequest request, HttpServletResponse response, String name); > + > + /** > + * Set the report dialog uri. > + * > + * @param dialogUri > + */ > + public void setDialogRealUri(HttpServletRequest request, String dialogUri) { > + request.setAttribute(DIALOG_URI, dialogUri); > + } > + > + public static String checkButton(HttpServletRequest request, HttpServletResponse response) { > + String action = request.getParameter("action"); > + if (ReportStringUtil.isNotEmpty(action)) { > + if (action.equalsIgnoreCase("ok")) { > + request.removeAttribute(SESSION_REPORT_CLASS); > + request.removeAttribute(DIALOG_URI); > + return "ok"; > + } else if (action.equalsIgnoreCase("cancel")) { > + request.removeAttribute(SESSION_REPORT_CLASS); > + request.removeAttribute(DIALOG_URI); > + return "cancel"; > + } > + } > + action = request.getParameter("ok"); > + if (ReportStringUtil.isNotEmpty(action)) { > + if (action.equalsIgnoreCase("ok")) { > + request.removeAttribute(SESSION_REPORT_CLASS); > + request.removeAttribute(DIALOG_URI); > + return "ok"; > + } > + } > + action = request.getParameter("cancel"); > + if (ReportStringUtil.isNotEmpty(action)) { > + if (action.equalsIgnoreCase("cancel")) { > + request.removeAttribute(SESSION_REPORT_CLASS); > + request.removeAttribute(DIALOG_URI); > + return "cancel"; > + } > + } > + > + return "success"; > + } > +} > \ No newline at end of file > > Added: ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReport.java > URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReport.java?rev=1770621&view=auto > ============================================================================== > --- ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReport.java (added) > +++ ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReport.java Mon Nov 21 08:07:57 2016 > @@ -0,0 +1,187 @@ > +/******************************************************************************* > + * 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. > + *******************************************************************************/ > +package org.apache.ofbiz.htmlreport; > + > +import java.util.ArrayList; > +import java.util.List; > +import java.util.Locale; > + > +/** > + * Base report class. > + * > + */ > +public abstract class AbstractReport implements InterfaceReport { > + > + /** Contains all error messages generated by the report. */ > + private List<Object> errors; > + > + /** The locale this report is written in. */ > + private Locale locale; > + > + /** Runtime of the report. */ > + private long startTime; > + > + /** Contains all warning messages generated by the report. */ > + private List<Object> warnings = new ArrayList<Object>(); > + > + /** Day constant. */ > + private static final long DAYS = 1000 * 60 * 60 * 24; > + > + /** Hour constant. */ > + private static final long HOURS = 1000 * 60 * 60; > + > + /** Minute constant. */ > + private static final long MINUTES = 1000 * 60; > + > + /** Second constant. */ > + private static final long SECONDS = 1000; > + > + public static final String SESSION_REPORT_CLASS = "OFBIZ_HTML_REPORT"; > + > + public void addError(Object obj) { > + > + errors.add(obj); > + } > + > + public void addWarning(Object obj) { > + > + warnings.add(obj); > + } > + > + public String formatRuntime() { > + > + long runtime = getRuntime(); > + long seconds = (runtime / SECONDS) % 60; > + long minutes = (runtime / MINUTES) % 60; > + long hours = (runtime / HOURS) % 24; > + long days = runtime / DAYS; > + StringBuffer strBuf = new StringBuffer(); > + > + if (days > 0) { > + if (days < 10) { > + strBuf.append('0'); > + } > + strBuf.append(days); > + strBuf.append(':'); > + } > + > + if (hours < 10) { > + strBuf.append('0'); > + } > + strBuf.append(hours); > + strBuf.append(':'); > + > + if (minutes < 10) { > + strBuf.append('0'); > + } > + strBuf.append(minutes); > + strBuf.append(':'); > + > + if (seconds < 10) { > + strBuf.append('0'); > + } > + strBuf.append(seconds); > + > + return strBuf.toString(); > + } > + > + public List<Object> getErrors() { > + return errors; > + } > + > + public Locale getLocale() { > + return locale; > + } > + > + public long getRuntime() { > + return System.currentTimeMillis() - startTime; > + } > + > + public List<Object> getWarnings() { > + return warnings; > + } > + > + public boolean hasError() { > + return (errors.size() > 0); > + } > + > + public boolean hasWarning() { > + return (warnings.size() > 0); > + } > + > + public void resetRuntime() { > + startTime = System.currentTimeMillis(); > + } > + > + /** > + * Initializes some member variables for this report.<p> > + * > + * @param locale the locale for this report > + */ > + protected void init(Locale locale) { > + startTime = System.currentTimeMillis(); > + this.locale = locale; > + errors = new ArrayList<Object>(); > + } > + > + /** > + * Prints a String to the report.<p> > + * > + * @param value the String to add > + */ > + public void print(String value) { > + print(value, FORMAT_DEFAULT); > + } > + > + /** > + * Prints a String to the report, using the indicated formatting.<p> > + * > + * Use the contants starting with <code>FORMAT</code> from this interface > + * to indicate which formatting to use.<p> > + * > + * @param value the message container to add > + * @param format the formatting to use for the output > + */ > + public abstract void print(String value, int format); > + > + /** > + * Prints a String with line break to the report.<p> > + * > + * @param value the message container to add > + */ > + public void println(String value) { > + > + println(value, FORMAT_DEFAULT); > + } > + > + /** > + * Prints a String with line break to the report, using the indicated formatting.<p> > + * > + * Use the contants starting with <code>FORMAT</code> from this interface > + * to indicate which formatting to use.<p> > + * > + * @param value the String to add > + * @param format the formatting to use for the output > + */ > + public void println(String value, int format) { > + print(value, format); > + println(); > + } > + > +} > \ No newline at end of file > > Added: ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReportThread.java > URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReportThread.java?rev=1770621&view=auto > ============================================================================== > --- ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReportThread.java (added) > +++ ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReportThread.java Mon Nov 21 08:07:57 2016 > @@ -0,0 +1,217 @@ > +/******************************************************************************* > + * 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. > + *******************************************************************************/ > +package org.apache.ofbiz.htmlreport; > + > +import java.util.List; > +import java.util.Locale; > + > +import javax.servlet.http.HttpServletRequest; > +import javax.servlet.http.HttpServletResponse; > + > +import org.apache.ofbiz.base.util.UtilHttp; > +import org.safehaus.uuid.EthernetAddress; > +import org.safehaus.uuid.UUID; > +import org.safehaus.uuid.UUIDGenerator; > + > +/** > + * Provides a common Thread class for the reports. > + * > + */ > +public abstract class AbstractReportThread extends Thread implements InterfaceReportThread { > + > + /** Indicates if the thread was already checked by the grim reaper. */ > + private boolean doomed; > + > + /** The report that belongs to the thread. */ > + private InterfaceReport report; > + > + /** The time this report is running. */ > + private long startTime; > + > + private UUID uuid; > + > + private Locale locale; > + > + /** > + * Constructs a new report Thread with the given name.<p> > + * > + * @param name the name of the Thread > + */ > + protected AbstractReportThread(HttpServletRequest request, HttpServletResponse response, String name) { > + > + super(Thread.currentThread().getThreadGroup(), name); > + // report Threads are never daemon Threads > + setDaemon(false); > + // the session must not be updated when it is used in a report > + EthernetAddress ethernetAddress = UUIDGenerator.getInstance().getDummyAddress(); > + uuid = UUIDGenerator.getInstance().generateTimeBasedUUID(ethernetAddress); > + > + setName(name + " [" + uuid.toString() + "]"); > + // new Threads are not doomed > + doomed = false; > + // set start time > + startTime = System.currentTimeMillis(); > + locale = UtilHttp.getLocale(request); > + } > + > + > + public UUID getUUID() { > + return uuid; > + } > + > + /** > + * Adds an error object to the list of errors that occured during the report.<p> > + * > + * @param obj the error object > + */ > + public void addError(Object obj) { > + > + if (getReport() != null) { > + getReport().addError(obj); > + } > + } > + > + /** > + * Returns the error exception in case there was an error during the execution of > + * this Thread, null otherwise.<p> > + * > + * @return the error exception in case there was an error, null otherwise > + */ > + public Throwable getError() { > + > + return null; > + } > + > + /** > + * Returns a list of all errors that occured during the report.<p> > + * > + * @return an error list that occured during the report > + */ > + public List<?> getErrors() { > + > + if (getReport() != null) { > + return getReport().getErrors(); > + } else { > + return null; > + } > + } > + > + /** > + * Returns the part of the report that is ready for output.<p> > + * > + * @return the part of the report that is ready for output > + */ > + public abstract String getReportUpdate(); > + > + /** > + * Returns the time this report has been running.<p> > + * > + * @return the time this report has been running > + */ > + public synchronized long getRuntime() { > + > + if (doomed) { > + return startTime; > + } else { > + return System.currentTimeMillis() - startTime; > + } > + } > + > + /** > + * Returns if the report generated an error output.<p> > + * > + * @return true if the report generated an error, otherwise false > + */ > + public boolean hasError() { > + > + if (getReport() != null) { > + return (getReport().getErrors().size() > 0); > + } else { > + return false; > + } > + } > + > + /** > + * Returns true if this thread is already "doomed" to be deleted.<p> > + * > + * A OFBiz deamon Thread (the "Grim Reaper") will collect all > + * doomed Threads, i.e. threads that are not longer active for some > + * time.<p> > + * > + * @return true if this thread is already "doomed" to be deleted > + */ > + public synchronized boolean isDoomed() { > + > + if (isAlive()) { > + // as long as the Thread is still active it is never doomed > + return false; > + } > + if (doomed) { > + // not longer active, and already doomed, so rest in peace... > + return true; > + } > + // condemn the Thread to be collected by the grim reaper next time > + startTime = getRuntime(); > + doomed = true; > + return false; > + } > + > + /** > + * Returns the report where the output of this Thread is written to.<p> > + * > + * @return the report where the output of this Thread is written to > + */ > + protected InterfaceReport getReport() { > + > + return report; > + } > + > + /** > + * Initialize a HTML report for this Thread.<p> > + * > + * @param locale the locale for the report output messages > + */ > + protected void initHtmlReport(HttpServletRequest request, HttpServletResponse response) { > + > + report = HtmlReport.getInstance(request, response); > + ((HtmlReport) report).setParamThread(getUUID().toString()); > + } > + > + /** > + * Initialize a HTML report for this Thread.<p> > + * > + * @param locale the locale for the report output messages > + */ > + protected void initHtmlReport(HttpServletRequest request, HttpServletResponse response, boolean writeHtml, boolean isTransient) { > + > + report = HtmlReport.getInstance(request, response, writeHtml, isTransient); > + ((HtmlReport) report).setParamThread(getUUID().toString()); > + } > + > + protected void initHtmlReport(HttpServletRequest request, HttpServletResponse response, boolean writeHtml, boolean isTransient, String logFileName) { > + > + report = HtmlReport.getInstance(request, response, writeHtml, isTransient, logFileName); > + ((HtmlReport) report).setParamThread(getUUID().toString()); > + } > + > + protected Locale getLocale() { > + return locale; > + } > + > +} > > > |
Administrator
|
Thanks Jinghai,
I just noticed these labels are duplicated ExcelTableNoRow ExcelTableNoRow ExcelTableColumnNumberNotMatch ExcelTableColumnNumberNotMatch ExcelTableColumnNotMatch ExcelTableColumnNotMatch ExcelParsingRow ExcelParsingRow Jacques Le 05/12/2016 à 16:34, Shi Jinghai a écrit : > Thank you Jacques! > > I committed a fix to the 2 bugs in rev. 1772689. > > Kind Regards, > > Shi Jinghai > > > -----邮件原件----- > 发件人: Jacques Le Roux [mailto:[hidden email]] > 发送时间: 2016年12月5日 18:22 > 收件人: [hidden email] > 主题: Re: svn commit: r1770621 [1/5] - in /ofbiz/trunk/specialpurpose/pricat: ./ config/ data/ entitydef/ groovyScripts/ groovyScripts/pricat/ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/ofbiz/ src/main... > > Hi Shi, > > I just noticed EXCELIMPORT_USERLOGIN is 3 chars too long, EXCELIMPORT_USERLG would work > > Also there is a RelationNameNotUnique in same place. You should use titles (look for "title" in > https://cwiki.apache.org/confluence/display/OFBIZ/Entity+Engine+Guide) > > like in > > <relation type="one" fk-name="FATGL_PGL" title="Profit" rel-entity-name="GlAccount"> > <key-map field-name="profitGlAccountId" rel-field-name="glAccountId"/> > </relation> > <relation type="one" fk-name="FATGL_LGL" title="Loss" rel-entity-name="GlAccount"> > <key-map field-name="lossGlAccountId" rel-field-name="glAccountId"/> > </relation> > > 2016-12-05 10:57:12,910 |delegator-startup-1 |GenericDelegator |W| =-=-=-=-= Found 2 warnings when checking the entity definitions: > 2016-12-05 10:57:12,910 |delegator-startup-1 |GenericDelegator |W| [RelFKNameGT18] The foreign key named EXCELIMPORT_USERLOGIN > (length:21) was greater than 18 characters in length for relation UserLogin of entity ExcelImportHistory. > 2016-12-05 10:57:12,910 |delegator-startup-1 |GenericDelegator |W| [RelationNameNotUnique] Relation Enumeration of entity > ExcelImportHistory is not unique for that entity. > > Thanks > > Jacques > > > Le 21/11/2016 à 09:07, [hidden email] a écrit : >> Author: shijh >> Date: Mon Nov 21 08:07:57 2016 >> New Revision: 1770621 >> >> URL: http://svn.apache.org/viewvc?rev=1770621&view=rev >> Log: >> OFBIZ-9123 Add a PriCat component under specialpurpose >> >> Added: >> ofbiz/trunk/specialpurpose/pricat/ >> ofbiz/trunk/specialpurpose/pricat/build.gradle >> ofbiz/trunk/specialpurpose/pricat/config/ >> ofbiz/trunk/specialpurpose/pricat/config/PricatUiLabels.xml >> ofbiz/trunk/specialpurpose/pricat/config/pricat.properties >> ofbiz/trunk/specialpurpose/pricat/data/ >> ofbiz/trunk/specialpurpose/pricat/data/PricatData.xml >> ofbiz/trunk/specialpurpose/pricat/entitydef/ >> ofbiz/trunk/specialpurpose/pricat/entitydef/entitymodel.xml >> ofbiz/trunk/specialpurpose/pricat/groovyScripts/ >> ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/ >> ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImport.groovy >> ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImportLog.groovy >> ofbiz/trunk/specialpurpose/pricat/ofbiz-component.xml >> ofbiz/trunk/specialpurpose/pricat/src/ >> ofbiz/trunk/specialpurpose/pricat/src/main/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractHtmlReport.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReport.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReportThread.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/HtmlReport.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/InterfaceReport.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/InterfaceReportThread.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/sample/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/sample/SampleHtmlReport.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/sample/SampleHtmlThread.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/util/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/util/ReportEncoder.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/util/ReportStringUtil.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/AbstractPricatParser.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/InterfacePricatParser.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/PricatEvents.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/PricatParseExcelHtmlReport.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/PricatParseExcelHtmlThread.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/sample/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/sample/SamplePricatEvents.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/sample/SamplePricatParser.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/poi/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/poi/xssf/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/poi/xssf/usermodel/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/poi/xssf/usermodel/OFBizPricatUtil.java >> ofbiz/trunk/specialpurpose/pricat/webapp/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/WEB-INF/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/WEB-INF/controller.xml >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/WEB-INF/web.xml >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/error/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/error/error.jsp >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/ExcelImportHistoryReport.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/pricatreport.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/report.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/viewExcelImportHistory.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/viewExcelImportLog.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/includes/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/includes/pricat.css >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/index.jsp >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/WEB-INF/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/WEB-INF/controller.xml >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/WEB-INF/web.xml >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/downloads/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/downloads/SamplePricatTemplate_V1.1.xlsx (with props) >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/error/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/error/error.jsp >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/SamplePricat.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/countdownreport.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/countupreport.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/main.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/parsePricatExcel.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/index.jsp >> ofbiz/trunk/specialpurpose/pricat/widget/ >> ofbiz/trunk/specialpurpose/pricat/widget/CommonScreens.xml >> ofbiz/trunk/specialpurpose/pricat/widget/PriCatDemoMenus.xml >> ofbiz/trunk/specialpurpose/pricat/widget/PriCatMenus.xml >> ofbiz/trunk/specialpurpose/pricat/widget/SampleScreens.xml >> >> Added: ofbiz/trunk/specialpurpose/pricat/build.gradle >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/build.gradle?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/build.gradle (added) >> +++ ofbiz/trunk/specialpurpose/pricat/build.gradle Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,25 @@ >> +/* >> + * 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. >> + */ >> +dependencies { >> + pluginLibsCompile 'org.safehaus.jug:jug:2.0.0:asl' >> + pluginLibsCompile 'org.apache.poi:poi-ooxml:3.14' >> + pluginLibsCompile 'org.apache.poi:poi-ooxml-schemas:3.14' >> + pluginLibsCompile 'org.apache.poi:poi-excelant:3.14' >> + pluginLibsCompile 'org.apache.poi:poi-scratchpad:3.14' >> +} >> \ No newline at end of file >> >> Added: ofbiz/trunk/specialpurpose/pricat/config/PricatUiLabels.xml >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/config/PricatUiLabels.xml?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/config/PricatUiLabels.xml (added) >> +++ ofbiz/trunk/specialpurpose/pricat/config/PricatUiLabels.xml Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,532 @@ >> +<?xml version="1.0" encoding="UTF-8"?> >> +<!-- >> +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. >> +--> >> +<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> >> + <property key="PriCatCompanyName"> >> + <value xml:lang="en">OFBiz: PriCat Demo</value> >> + <value xml:lang="zh">OFBizï¼ä»·ç®è¡¨</value> >> + </property> >> + <property key="PriCatApplication"> >> + <value xml:lang="en">PriCat</value> >> + <value xml:lang="zh">ä»·ç®è¡¨</value> >> + </property> >> + <property key="PriCatDemoCompanyName"> >> + <value xml:lang="en">OFBiz: PriCat Demo</value> >> + <value xml:lang="zh">OFBizï¼ä»·ç®è¡¨æ¼ç¤º</value> >> + </property> >> + <property key="PriCatDemoApplication"> >> + <value xml:lang="en">PriCat Demo</value> >> + <value xml:lang="zh">ä»·ç®è¡¨æ¼ç¤º</value> >> + </property> >> + <property key="PriCatDemoCountDown"> >> + <value xml:lang="en">HTML Report Demo - Count Down</value> >> + <value xml:lang="zh">页é¢è¾åºæ¼ç¤º - å计æ°</value> >> + </property> >> + <property key="PriCatDemoCountUp"> >> + <value xml:lang="en">HTML Report Demo - Count Up</value> >> + <value xml:lang="zh">页é¢è¾åºæ¼ç¤º - æ£è®¡æ°</value> >> + </property> >> + <property key="PriCatDemoParseSamplePricat"> >> + <value xml:lang="en">PriCat Demo - Parse PriCat</value> >> + <value xml:lang="zh">ä»·ç®è¡¨æ¼ç¤º - 解æä»·ç®è¡¨</value> >> + </property> >> + <property key="PriCatDemoMainPage"> >> + <value xml:lang="en">PriCat Demo Main Page</value> >> + <value xml:lang="zh">ä»·ç®è¡¨æ¼ç¤ºé¦é¡µ</value> >> + </property> >> + <property key="PricatDemoMessage"> >> + <value xml:lang="en">PriCat Demo includes 2 HTML Report Demo and 1 Parse PriCat File Demo.</value> >> + <value xml:lang="zh">ä»·ç®è¡¨æ¼ç¤ºå å«äº2个页é¢è¾åºæ¼ç¤ºå1个解æä»·ç®è¡¨æ件çæ¼ç¤ºã</value> >> + </property> >> + <property key="ParseSamplePricatDemo"> >> + <value xml:lang="en">Parse Sample PriCat Demo</value> >> + <value xml:lang="zh">æ¼ç¤ºè§£ææ ·ä¾ä»·ç®è¡¨æ件</value> >> + </property> >> + <property key="SamplePricatTemplate"> >> + <value xml:lang="en">Sample PriCat Template</value> >> + <value xml:lang="zh">ä»·ç®è¡¨æ ·ä¾æ¨¡æ¿</value> >> + </property> >> + <property key="DownloadPricatTemplate"> >> + <value xml:lang="en">Download PriCat Template</value> >> + <value xml:lang="zh">ä¸è½½ä»·ç®è¡¨æ¨¡æ¿</value> >> + </property> >> + <property key="UploadPricat"> >> + <value xml:lang="en">Upload PriCat</value> >> + <value xml:lang="zh">ä¸ä¼ ä»·ç®è¡¨</value> >> + </property> >> + <property key="ParseSamplePricat"> >> + <value xml:lang="en">Parse Sample PriCat</value> >> + <value xml:lang="zh">解ææ ·ä¾ä»·ç®è¡¨</value> >> + </property> >> + <property key="ExcelTemplateType"> >> + <value xml:lang="en">Template Type</value> >> + <value xml:lang="zh">模æ¿ç±»å</value> >> + </property> >> + <property key="SamplePricatType"> >> + <value xml:lang="en">Sample PriCat</value> >> + <value xml:lang="zh">æ ·ä¾ä»·ç®è¡¨</value> >> + </property> >> + <property key="OFBizPricatType"> >> + <value xml:lang="en">OFBiz Type</value> >> + <value xml:lang="zh">OFBizç±»å</value> >> + </property> >> + <property key="StartStoreExcel"> >> + <value xml:lang="en">Storing your upload file to server ... </value> >> + <value xml:lang="zh">æ£å¨æä¸ä¼ æ件åå°æå¡å¨ä¸ ... </value> >> + </property> >> + <property key="NoFileUploaded"> >> + <value xml:lang="en">no file uploaded!</value> >> + <value xml:lang="zh">没æä¸ä¼ æ件ï¼</value> >> + </property> >> + <property key="StartParsePricat"> >> + <value xml:lang="en">Start parsing the uploaded file ...</value> >> + <value xml:lang="zh">å¼å§è§£æä¸ä¼ çæ件 ...</value> >> + </property> >> + <property key="PricatParseCompleted"> >> + <value xml:lang="en">... parsing completed</value> >> + <value xml:lang="zh">... å®æ解æ</value> >> + </property> >> + <property key="CurrentUserLoginNoFacility"> >> + <value xml:lang="en">Cannot find any facility for current user(userLoginId: [{0}]).</value> >> + <value xml:lang="zh">没ææ¾å°å½åç¨æ·ï¼userLoginId: [{0}]ï¼çä»»ä½ä¸ä¸ªä»åºã</value> >> + </property> >> + <property key="GetCurrentUserLoginFacility"> >> + <value xml:lang="en">Getting facilities of current user ... </value> >> + <value xml:lang="zh">æ£å¨è·å¾å½åç¨æ·çä»åº ... </value> >> + </property> >> + <property key="FacilityFoundForCurrentUserLogin"> >> + <value xml:lang="en">({0}) Facility found for current user: {1}[{2}].</value> >> + <value xml:lang="zh">({0}) æ¾å°å½åç¨æ·çä»åºï¼{1}[{2}]ã</value> >> + </property> >> + <property key="FacilityNotBelongToYou"> >> + <value xml:lang="en">Facility {0}[{1}] does not belong to you. Please use a facility of yours.</value> >> + <value xml:lang="zh">ä»åº{0}[{1}]ä¸å±äºä½ ï¼è¯·æ¹ä¸ºä½ èªå·±çä»åºã</value> >> + </property> >> + <property key="ExcelTemplateTypeSelected"> >> + <value xml:lang="en">The selected Excel template type: </value> >> + <value xml:lang="zh">éæ©çExcel模æ¿ç±»åï¼</value> >> + </property> >> + <property key="FacilityIdSelected"> >> + <value xml:lang="en">The selected facility Id: </value> >> + <value xml:lang="zh">éæ©çä»åºç¼å·ï¼</value> >> + </property> >> + <property key="ParsePricatFileStatement"> >> + <value xml:lang="en">Loading file {0} ... </value> >> + <value xml:lang="zh">æ£å¨è¯»å ¥æ件{0} ... </value> >> + </property> >> + <property key="PricatSuggestion"> >> + <value xml:lang="en">Please make sure your Excel file is in format of Microsoft Excel 2007 and later. And then try again.</value> >> + <value xml:lang="zh">è¯·ç¡®è®¤ä½ çExcelæä»¶æ ¼å¼æ¯å¾®è½¯Office 2007ææ´æ°çæ¬çï¼ç¶åéè¯ä¸ä¸ã</value> >> + </property> >> + <property key="CheckPricatHasSheet"> >> + <value xml:lang="en">Checking whether your file contains at least a sheet ... </value> >> + <value xml:lang="zh">æ£å¨æ£æ¥ä½ çæ件æ¯å¦å å«è³å°ä¸ä¸ªè¡¨å ... </value> >> + </property> >> + <property key="PricatVersionNotSupport"> >> + <value xml:lang="en">Pricat Version {0} is not supported.</value> >> + <value xml:lang="zh">è¿ä¸è½æ¯æè¿ä¸ªä»·æ ¼åç±»ççæ¬{0}ã</value> >> + </property> >> + <property key="PricatTableOnlyParse1stSheet"> >> + <value xml:lang="en">Only the 1st sheet will be parsed.</value> >> + <value xml:lang="zh">åªè§£æ第ä¸å¼ 表ã</value> >> + </property> >> + <property key="PricatTableNoSheet"> >> + <value xml:lang="en">There's no sheet in the PriCat file.</value> >> + <value xml:lang="zh">ä»·æ ¼åç±»æ件ä¸æ²¡æ表ã</value> >> + </property> >> + <property key="PricatTableRows"> >> + <value xml:lang="en">Sheet [{2}] has {0} rows of header and {1} rows of data.</value> >> + <value xml:lang="zh">表å[{2}]æ{0}è¡è¡¨å¤´å{1}è¡æ°æ®ã</value> >> + </property> >> + <property key="PricatTableRow"> >> + <value xml:lang="en">Sheet [{0}] has only 1 row of data.</value> >> + <value xml:lang="zh">表å[{0}]åªæä¸è¡æ°æ®ã</value> >> + </property> >> + <property key="ExcelTableNoRow"> >> + <value xml:lang="en">There's no row in sheet [{0}].</value> >> + <value xml:lang="zh">表å[{0}]ä¸æ²¡ææ°æ®ã</value> >> + </property> >> + <property key="ExcelTableColumnNumberNotMatch"> >> + <value xml:lang="en">The sheet has {0} columns, it's not the same as sample sheet's {1}.</value> >> + <value xml:lang="zh">表åæ{0}åï¼ä¸æ ·ä¾è¡¨åç{1}åä¸åã</value> >> + </property> >> + <property key="ExcelTableColumnNotMatch"> >> + <value xml:lang="en">The column {0} has a name {1}, it's not identical to {2}.</value> >> + <value xml:lang="zh">å{0}çååæ¯{1}ï¼åºæ¯{2}ã</value> >> + </property> >> + <property key="ExcelParsingRow"> >> + <value xml:lang="en">({0}) parsing {1} ...</value> >> + <value xml:lang="zh">({0}) æ£å¨è§£æ {1} ...</value> >> + </property> >> + <property key="StartCheckPricatVersion"> >> + <value xml:lang="en">Check PriCat file's version ... </value> >> + <value xml:lang="zh">æ£æ¥ä»·æ ¼åç±»æ件ççæ¬ ... </value> >> + </property> >> + <property key="StartCheckCurrencyId"> >> + <value xml:lang="en">Checking currencyId ... </value> >> + <value xml:lang="zh">æ£å¨æ£æ¥å¸ç§ ... </value> >> + </property> >> + <property key="CurrencyIdRequired"> >> + <value xml:lang="en">CurrencyId is required. Please set it at row 3 column 2.</value> >> + <value xml:lang="zh">å¿ é¡»è®¾ç½®è´§å¸ã请设置å¨ç¬¬ä¸è¡ã第äºåã</value> >> + </property> >> + <property key="CurrencyIdIs"> >> + <value xml:lang="en">CurrencyId is {0}</value> >> + <value xml:lang="zh">è´§å¸æ¯{0}</value> >> + </property> >> + <property key="CurrencyIdNotFound"> >> + <value xml:lang="en">CurrencyId {0} cannot be found in this system.</value> >> + <value xml:lang="zh">æ¬ç³»ç»ä¸æ¾ä¸å°è´§å¸{0}ã</value> >> + </property> >> + <property key="CurrencyIdNotCurrency"> >> + <value xml:lang="en">{0} is not a currency in this system.</value> >> + <value xml:lang="zh">{0}å¨è¿ä¸ªç³»ç»éä¸æ¯è´§å¸ã</value> >> + </property> >> + <property key="HeaderContainsError"> >> + <value xml:lang="en">There are errors in PriCat header. Please correct it and upload it again.</value> >> + <value xml:lang="zh">表头ä¸æé误ï¼è¯·ä¿®æ¹åéæ°ä¸ä¼ ã</value> >> + </property> >> + <property key="PricatNoDataRows"> >> + <value xml:lang="en">There are no data in your PriCat file, no further operation is required.</value> >> + <value xml:lang="zh">ä½ çä»·æ ¼åç±»æ件ä¸æ²¡ææ°æ®ï¼ä¸ååæ°æ®è§£æäºã</value> >> + </property> >> + <property key="DataContainsError"> >> + <value xml:lang="en">There are errors in data of your PriCat file. Please correct it and upload it again.</value> >> + <value xml:lang="zh">ä»·æ ¼åç±»æ件çæ°æ®ä¸æé误ï¼è¯·ä¿®æ¹åéæ°ä¸ä¼ ã</value> >> + </property> >> + <property key="CellTypeNotString"> >> + <value xml:lang="en">The type of cell[{0}, {1}] is not String. The cell value will be changed to String type.</value> >> + <value xml:lang="zh">åå æ ¼[{0}, {1}]ä¸æ¯å符类åãå°æè¿ä¸ªåå æ ¼çå¼è½¬ä¸ºå符类åã</value> >> + </property> >> + <property key="CellTypeNotNumeric"> >> + <value xml:lang="en">The type of cell[{0}, {1}] is not numeric. The cell value will be changed to numeric type.</value> >> + <value xml:lang="zh">åå æ ¼[{0}, {1}]ä¸æ¯æ°åç±»åãå°æè¿ä¸ªåå æ ¼çå¼è½¬ä¸ºæ°åç±»åã</value> >> + </property> >> + <property key="ErrorParseValueToNumeric"> >> + <value xml:lang="en">Unable to parse the value to a numeric.</value> >> + <value xml:lang="zh">æ æ³æè¿ä¸ªåå æ ¼çå¼è½¬ä¸ºæ°åã</value> >> + </property> >> + <property key="StartCheckHeaderColNum"> >> + <value xml:lang="en">Checking whether the number of header columns matches the template's of version {0} ... </value> >> + <value xml:lang="zh">æ£å¨æ£æ¥è¡¨å¤´çåæ°æ¯å¦ä¸çæ¬{0}ç模æ¿ä¸è´ ... </value> >> + </property> >> + <property key="HeaderColNumNotMatch"> >> + <value xml:lang="en">The number of columns of {0} template header columns, column number {1} and imported template columns are not consistent ... </value> >> + <value xml:lang="zh">模æ¿è¡¨å¤´çåæ°{0}å,ä¸å¯¼å ¥ç模æ¿çåæ°{1}åä¸ä¸è´ ... </value> >> + </property> >> + <property key="StartCheckHeaderColLabel"> >> + <value xml:lang="en">Checking whether the header labels match the template's of version {0} ... </value> >> + <value xml:lang="zh">æ£å¨æ£æ¥è¡¨å¤´çæåæ¯å¦ä¸çæ¬{0}ç模æ¿ä¸è´ ... </value> >> + </property> >> + <property key="HeaderColLabelNotMatch"> >> + <value xml:lang="en">The lable of row {0} colum {1} is [{2}], it does not match [{3}] as expected.</value> >> + <value xml:lang="zh">è¡{0}å{1}çæåæ¯[{2}]ï¼ä¸ææç[{3}]ä¸ä¸è´ã</value> >> + </property> >> + <property key="HeaderColNumShortThanRequired"> >> + <value xml:lang="en">Table header column number less than the required {0}</value> >> + <value xml:lang="zh">表头åæ°å°äºè¦æ±ç{0}å</value> >> + </property> >> + <property key="UseHeaderColNum"> >> + <value xml:lang="en">the first {0} column labels will be checked</value> >> + <value xml:lang="zh">å°æ£æ¥è¡¨å¤´çå{0}åçæ ç¾</value> >> + </property> >> + <property key="WriteCommentsBackToExcel"> >> + <value xml:lang="en">Writing errors as commonts to your Excel file ... </value> >> + <value xml:lang="zh">æ£å¨æé误信æ¯ä½ä¸ºæ¹æ³¨åå°ä½ çExcelæ件é ... </value> >> + </property> >> + <property key="CLEANUP_LOGANDEXCEL_BEGIN"> >> + <value xml:lang="en">Start to clean log and commented excel files</value> >> + <value xml:lang="zh">å¼å§æ¸ çæ¥å¿åæ¹æ³¨è¿çExcelæ件</value> >> + </property> >> + <property key="HistoryLessThan"> >> + <value xml:lang="en">history entries less than {0}</value> >> + <value xml:lang="zh">åå²è®°å½å°äº{0}æ¡</value> >> + </property> >> + <property key="HistoryEntryToRemove"> >> + <value xml:lang="en">{0} entries to remove</value> >> + <value xml:lang="zh">è¦å é¤{0}æ¡è®°å½</value> >> + </property> >> + <property key="FacilityNameNotMatchId"> >> + <value xml:lang="en">In the system, the name of facilityId[{0}] is [{1}], NOT [{2}]. Please correct it and import again.</value> >> + <value xml:lang="zh">ç³»ç»ä¸ï¼ä»åºæ è¯[{0}]çå称æ¯[{1}]ï¼ä¸æ¯[{2}]ã请修æ¹åéæ°å¯¼å ¥ã</value> >> + </property> >> + <property key="ExcelEmptyRow"> >> + <value xml:lang="en">empty row</value> >> + <value xml:lang="zh">空è¡</value> >> + </property> >> + >> + <property key="REPORT_EXCEPTION"> >> + <value xml:lang="en">Exception: </value> >> + <value xml:lang="zh">æå¤é误ï¼</value> >> + </property> >> + <property key="DIALOG_BUTTON_OK"> >> + <value xml:lang="en">OK</value> >> + <value xml:lang="zh">ç¡®å®</value> >> + </property> >> + <property key="DIALOG_BUTTON_CANCEL"> >> + <value xml:lang="en">Cancel</value> >> + <value xml:lang="zh">åæ¶</value> >> + </property> >> + <property key="DIALOG_BUTTON_EDIT"> >> + <value xml:lang="en">Edit</value> >> + <value xml:lang="zh">ç¼è¾</value> >> + </property> >> + <property key="DIALOG_BUTTON_DISCARD"> >> + <value xml:lang="en">Discard</value> >> + <value xml:lang="zh">æ¾å¼</value> >> + </property> >> + <property key="DIALOG_BUTTON_CLOSE"> >> + <value xml:lang="en">Close</value> >> + <value xml:lang="zh">å ³é</value> >> + </property> >> + <property key="DIALOG_BUTTON_ADVANCE"> >> + <value xml:lang="en">Advance</value> >> + <value xml:lang="zh">é«çº§</value> >> + </property> >> + <property key="DIALOG_BUTTON_SET"> >> + <value xml:lang="en">Set</value> >> + <value xml:lang="zh">设置</value> >> + </property> >> + <property key="DIALOG_BUTTON_BACK"> >> + <value xml:lang="en">Back</value> >> + <value xml:lang="zh">è¿å</value> >> + </property> >> + <property key="DIALOG_BUTTON_CONTINUE"> >> + <value xml:lang="en">Continue</value> >> + <value xml:lang="zh">继ç»</value> >> + </property> >> + <property key="DIALOG_BUTTON_DETAIL"> >> + <value xml:lang="en">Detail</value> >> + <value xml:lang="zh">详ç»</value> >> + </property> >> + <property key="DIALOG_BUTTON_DOWNLOAD"> >> + <value xml:lang="en">Download</value> >> + <value xml:lang="zh">ä¸è½½</value> >> + </property> >> + <property key="FORMAT_DEFAULT"> >> + <value xml:lang="en">({0}) This is default format.</value> >> + <value xml:lang="zh">({0}) è¿æ¯ç¼ºçæ ¼å¼ã</value> >> + </property> >> + <property key="FORMAT_WARNING"> >> + <value xml:lang="en">({0}) This is warning format.</value> >> + <value xml:lang="zh">({0}) è¿æ¯è¦åæ ¼å¼ã</value> >> + </property> >> + <property key="FORMAT_HEADLINE"> >> + <value xml:lang="en">({0}) This is headline format.</value> >> + <value xml:lang="zh">({0}) è¿æ¯æ é¢æ ¼å¼ã</value> >> + </property> >> + <property key="FORMAT_NOTE"> >> + <value xml:lang="en">({0}) This is note format.</value> >> + <value xml:lang="zh">({0}) è¿æ¯è®°å½æ ¼å¼ã</value> >> + </property> >> + <property key="FORMAT_OK"> >> + <value xml:lang="en">({0}) This is OK format.</value> >> + <value xml:lang="zh">({0}) è¿æ¯æ£ç¡®æ¶çæ ¼å¼ã</value> >> + </property> >> + <property key="FORMAT_ERROR"> >> + <value xml:lang="en">({0}) This is error format.</value> >> + <value xml:lang="zh">({0}) è¿æ¯é误æ¶çæ ¼å¼ã</value> >> + </property> >> + <property key="FORMAT_THROWABLE"> >> + <value xml:lang="en">({0}) This is throwable format.</value> >> + <value xml:lang="zh">({0}) è¿æ¯æåºé误çæ ¼å¼ã</value> >> + </property> >> + <property key="START_COUNT_DOWN"> >> + <value xml:lang="en">Start counting down ...</value> >> + <value xml:lang="zh">å¼å§åæ° ...</value> >> + </property> >> + <property key="COUNT_COMPLETED"> >> + <value xml:lang="en">... counting completed.</value> >> + <value xml:lang="zh">... å®æ计æ°ã</value> >> + </property> >> + <property key="START_COUNT_UP"> >> + <value xml:lang="en">String counting up ...</value> >> + <value xml:lang="zh">å¼å§æ£è®¡æ° ...</value> >> + </property> >> + <property key="RPT_ERROR"> >> + <value xml:lang="en">Error: </value> >> + <value xml:lang="zh">é误ï¼</value> >> + </property> >> + <property key="RPT_ERROR_DETAILS"> >> + <value xml:lang="en">Details: </value> >> + <value xml:lang="zh">详ç»ï¼</value> >> + </property> >> + <property key="ParseExcelDemo"> >> + <value xml:lang="en">Click here to see Import Excel demo</value> >> + <value xml:lang="zh">ç¹å»è¿éçå¯¼å ¥Excelæ¼ç¤º</value> >> + </property> >> + <property key="StartParseExcel"> >> + <value xml:lang="en">Start parsing a sample excel file ...</value> >> + <value xml:lang="zh">å¼å§è§£æä¸ä¸ªExcelæ ·ä¾æ件 ...</value> >> + </property> >> + <property key="ExcelParseCompleted"> >> + <value xml:lang="en">... parsing completed</value> >> + <value xml:lang="zh">... å®æ解æ</value> >> + </property> >> + <property key="ExcelTableOnlyParse1stSheet"> >> + <value xml:lang="en">Only the 1st sheet will be parsed.</value> >> + <value xml:lang="zh">åªè§£æ第ä¸å¼ 表ã</value> >> + </property> >> + <property key="ExcelTableNoSheet"> >> + <value xml:lang="en">There's no sheet in the excel.</value> >> + <value xml:lang="zh">Excelä¸æ²¡æ表ã</value> >> + </property> >> + <property key="ExcelTableRows"> >> + <value xml:lang="en">Sheet {1} has {0} rows.</value> >> + <value xml:lang="zh">表å{1}æ{0}è¡æ°æ®ã</value> >> + </property> >> + <property key="ExcelTableRow"> >> + <value xml:lang="en">Sheet {0} has only 1 row.</value> >> + <value xml:lang="zh">表å{0}åªæä¸è¡æ°æ®ã</value> >> + </property> >> + <property key="ExcelTableNoRow"> >> + <value xml:lang="en">There's no row in sheet {0}.</value> >> + <value xml:lang="zh">表å{0}ä¸æ²¡ææ°æ®ã</value> >> + </property> >> + <property key="ExcelTableColumnNumberNotMatch"> >> + <value xml:lang="en">The sheet has {0} columns, it's not the same as sample sheet's {1}.</value> >> + <value xml:lang="zh">表åæ{0}åï¼ä¸æ ·ä¾è¡¨åç{1}åä¸åã</value> >> + </property> >> + <property key="ExcelTableColumnNotMatch"> >> + <value xml:lang="en">The column {0} has a name {1}, it's not identical to {2}.</value> >> + <value xml:lang="zh">å{0}çååæ¯{1}ï¼åºæ¯{2}ã</value> >> + </property> >> + <property key="ExcelParsingRow"> >> + <value xml:lang="en">({0}) parsing {1} ...</value> >> + <value xml:lang="zh">({0}) æ£å¨è§£æ {1} ...</value> >> + </property> >> + <property key="ParseExcelEncoding"> >> + <value xml:lang="en"> Using {0} to parsing the excel file.</value> >> + <value xml:lang="zh"> æ£å¨ä½¿ç¨{0}解æExcelæ件ã</value> >> + </property> >> + <property key="ParseExcelToolStatement"> >> + <value xml:lang="en"> Using {0} to parsing the {1} format excel file...</value> >> + <value xml:lang="zh"> æ£å¨ä½¿ç¨{0}解æ{1}æ ¼å¼çExcelæ件...</value> >> + </property> >> + <property key="ok"> >> + <value xml:lang="en">ok</value> >> + <value xml:lang="zh">å®æ</value> >> + </property> >> + <property key="error"> >> + <value xml:lang="en">error</value> >> + <value xml:lang="zh">åºéäº</value> >> + </property> >> + <property key="skipped"> >> + <value xml:lang="en">skipped</value> >> + <value xml:lang="zh">è·³è¿</value> >> + </property> >> + >> + <property key="ExcelImportHistoryList"> >> + <value xml:lang="en">Excel Import History</value> >> + <value xml:lang="zh">Excelå¯¼å ¥æä½åå²è®°å½</value> >> + </property> >> + <property key="OnlyYourOwnImportHistoryDisplayed"> >> + <value xml:lang="en">(Only current login user's history can be displayed)</value> >> + <value xml:lang="zh">ï¼ä» è½æ¾ç¤ºå½åç¨æ·çå¯¼å ¥æä½åå²è®°å½ï¼</value> >> + </property> >> + <property key="SerialNumber"> >> + <value xml:lang="en">No.</value> >> + <value xml:lang="zh">åºå·</value> >> + </property> >> + <property key="Filename"> >> + <value xml:lang="en">Filename</value> >> + <value xml:lang="zh">æ件å</value> >> + </property> >> + <property key="FromDate"> >> + <value xml:lang="en">Start Time</value> >> + <value xml:lang="zh">å¼å§æ¶é´</value> >> + </property> >> + <property key="ThruDate"> >> + <value xml:lang="en">End Time</value> >> + <value xml:lang="zh">ç»ææ¶é´</value> >> + </property> >> + <property key="ThruReasonId"> >> + <value xml:lang="en">End Reason</value> >> + <value xml:lang="zh">ç»æåå </value> >> + </property> >> + <property key="ImportStatus"> >> + <value xml:lang="en">Import Status</value> >> + <value xml:lang="zh">å¯¼å ¥ç¶æ</value> >> + </property> >> + <property key="Actions"> >> + <value xml:lang="en">Actions</value> >> + <value xml:lang="zh">æä½</value> >> + </property> >> + <property key="ExcelImportTipNoData"> >> + <value xml:lang="en">No excel import history data.</value> >> + <value xml:lang="zh">没æExcelå¯¼å ¥åå²è®°å½</value> >> + </property> >> + <property key="EXCEL_IMPORTING"> >> + <value xml:lang="en">Importing</value> >> + <value xml:lang="zh">æ£å¨å¯¼å ¥</value> >> + </property> >> + <property key="EXCEL_IMPORTED"> >> + <value xml:lang="en">Imported</value> >> + <value xml:lang="zh">å·²å¯¼å ¥</value> >> + </property> >> + <property key="EXCEL_IMPORT_SUCCESS"> >> + <value xml:lang="en">Success</value> >> + <value xml:lang="zh">æå</value> >> + </property> >> + <property key="EXCEL_IMPORT_STOPPED"> >> + <value xml:lang="en">Stopped by user</value> >> + <value xml:lang="zh">ç¨æ·ç»æ¢äºå¯¼å ¥</value> >> + </property> >> + <property key="EXCEL_IMPORT_ERROR"> >> + <value xml:lang="en">Stopped by error</value> >> + <value xml:lang="zh">å åºéèåæ¢äºå¯¼å ¥</value> >> + </property> >> + <property key="EXCEL_IMPORT_QUEST"> >> + <value xml:lang="en">Data error found</value> >> + <value xml:lang="zh">æ°æ®ä¸æé误</value> >> + </property> >> + <property key="ViewExcelImportLogContent"> >> + <value xml:lang="en">View log content</value> >> + <value xml:lang="zh">æµè§æ¥å¿å 容</value> >> + </property> >> + <property key="DownloadCommentedExcel"> >> + <value xml:lang="en">Download excel</value> >> + <value xml:lang="zh">ä¸è½½Excel</value> >> + </property> >> + <property key="ViewExcelImportHistory"> >> + <value xml:lang="en">View Import History</value> >> + <value xml:lang="zh">å¯¼å ¥æä½åå²è®°å½</value> >> + </property> >> + <property key="ViewPricatLog"> >> + <value xml:lang="en">View</value> >> + <value xml:lang="zh">æµè§</value> >> + </property> >> + <property key="DownloadCommentedPricat"> >> + <value xml:lang="en">Download</value> >> + <value xml:lang="zh">ä¸è½½</value> >> + </property> >> + >> + <property key="ReasonOK"> >> + <value xml:lang="en">OK</value> >> + </property> >> + <property key="ReasonStopped"> >> + <value xml:lang="en">[S]</value> >> + </property> >> + <property key="ReasonError"> >> + <value xml:lang="en">[E]</value> >> + </property> >> + <property key="ReasonWarning"> >> + <value xml:lang="en">[W]</value> >> + </property> >> +</resource> >> >> Added: ofbiz/trunk/specialpurpose/pricat/config/pricat.properties >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/config/pricat.properties?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/config/pricat.properties (added) >> +++ ofbiz/trunk/specialpurpose/pricat/config/pricat.properties Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,24 @@ >> +############################################################################### >> +# 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. >> +############################################################################### >> + >> +# the latest pricat version to parse and download >> +pricat.latest.version=V1.1 >> + >> +# the max number of pricat history files to keep >> +pricat.history.max.filenumber=20 >> >> Added: ofbiz/trunk/specialpurpose/pricat/data/PricatData.xml >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/data/PricatData.xml?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/data/PricatData.xml (added) >> +++ ofbiz/trunk/specialpurpose/pricat/data/PricatData.xml Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,34 @@ >> +<?xml version="1.0" encoding="UTF-8"?> >> +<!-- >> +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. >> +--> >> +<entity-engine-xml> >> + <!-- Enumeration for thruReasonId of ExcelImportHistory entity --> >> + <EnumerationType description="Excel import thru reasons" enumTypeId="EXCEL_IMPORT_THRU" hasTable="N" parentTypeId=""/> >> + >> + <Enumeration enumId="EXCEL_IMPORT_SUCCESS" enumCode="EXCEL_IMPORT_SUCCESS" description="Excel Imported Successfully" sequenceId="01" enumTypeId="EXCEL_IMPORT_THRU"/> >> + <Enumeration enumId="EXCEL_IMPORT_STOPPED" enumCode="EXCEL_IMPORT_STOPPED" description="Excel Imported Stopped by user" sequenceId="02" enumTypeId="EXCEL_IMPORT_THRU"/> >> + <Enumeration enumId="EXCEL_IMPORT_ERROR" enumCode="EXCEL_IMPORT_ERROR" description="Excel Imported Exits Errorly" sequenceId="03" enumTypeId="EXCEL_IMPORT_THRU"/> >> + <Enumeration enumId="EXCEL_IMPORT_QUEST" enumCode="EXCEL_IMPORT_QUEST" description="Excel Imported Has Error Messages" sequenceId="04" enumTypeId="EXCEL_IMPORT_THRU"/> >> + >> + <!-- Enumeration for statusId of ExcelImportHistory entity --> >> + <EnumerationType description="Excel import status" enumTypeId="EXCEL_IMPORT_STATUS" hasTable="N" parentTypeId=""/> >> + >> + <Enumeration enumId="EXCEL_IMPORTING" enumCode="EXCEL_IMPORTING" description="Excel is being imported in progress" sequenceId="01" enumTypeId="EXCEL_IMPORT_STATUS"/> >> + <Enumeration enumId="EXCEL_IMPORTED" enumCode="EXCEL_IMPORTED" description="Excel has been imported" sequenceId="02" enumTypeId="EXCEL_IMPORT_STATUS"/> >> +</entity-engine-xml> >> >> Added: ofbiz/trunk/specialpurpose/pricat/entitydef/entitymodel.xml >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/entitydef/entitymodel.xml?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/entitydef/entitymodel.xml (added) >> +++ ofbiz/trunk/specialpurpose/pricat/entitydef/entitymodel.xml Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,48 @@ >> +<?xml version="1.0" encoding="UTF-8"?> >> +<!-- >> +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. >> +--> >> +<entitymodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> + xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/entitymodel.xsd"> >> + >> + <entity entity-name="ExcelImportHistory" >> + package-name="org.ofbiz.product.catalog" >> + title="Excel Import History Entity"> >> + <field name="userLoginId" type="id-vlong-ne"></field> >> + <field name="sequenceNum" type="numeric"></field> >> + <field name="fileName" type="value"></field> >> + <field name="fromDate" type="date-time"></field> >> + <field name="thruDate" type="date-time"></field> >> + <field name="thruReasonId" type="id-ne"></field> >> + <field name="statusId" type="id-ne"></field> >> + <field name="threadName" type="name"></field> >> + <field name="logFileName" type="value"></field> >> + <prim-key field="userLoginId"/> >> + <prim-key field="sequenceNum"/> >> + <relation rel-entity-name="UserLogin" type="one" fk-name="EXCELIMPORT_USERLOGIN"> >> + <key-map field-name="userLoginId"/> >> + </relation> >> + <relation rel-entity-name="Enumeration" type="one" fk-name="EXCELIMPORT_STATUS"> >> + <key-map field-name="statusId" rel-field-name="enumId"/> >> + </relation> >> + <relation rel-entity-name="Enumeration" type="one" fk-name="EXCELIMPORT_REASON"> >> + <key-map field-name="thruReasonId" rel-field-name="enumId"/> >> + </relation> >> + </entity> >> + >> +</entitymodel> >> >> Added: ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImport.groovy >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImport.groovy?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImport.groovy (added) >> +++ ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImport.groovy Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,24 @@ >> +/* >> + * 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. >> + */ >> +import org.apache.ofbiz.base.util.*; >> + >> +module = "FindMyExcelImport.groovy"; >> + >> +data = delegator.findByAnd("ExcelImportHistory", [userLoginId : userLogin.userLoginId], ["sequenceNum DESC"], false); >> +context.data = data; >> >> Added: ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImportLog.groovy >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImportLog.groovy?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImportLog.groovy (added) >> +++ ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImportLog.groovy Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,53 @@ >> +/* >> + * 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. >> + */ >> +import org.apache.ofbiz.base.util.*; >> +import java.io.FileInputStream; >> + >> +module = "FindMyExcelImport.groovy"; >> + >> +context.borderStyle = "2px inset /*begin-color ThreeDHighlight*/#ffffff/*end-color*/"; >> +context.borderSimpleStyle = "2px solid /*begin-color ThreeDFace*/#f0f0f0/*end-color*/"; >> + >> +sequenceNum = request.getParameter("sequenceNum"); >> + >> +if (sequenceNum == null) { >> + context.logFileContent = "No sequenceNum parameter found."; >> + return; >> +} >> + >> +historyEntry = delegator.findOne("ExcelImportHistory", [sequenceNum : Long.valueOf(sequenceNum), userLoginId : userLogin.userLoginId], false); >> +if (historyEntry == null) { >> + context.logFileContent = "No import history found."; >> + return; >> +} >> + >> +logFile = FileUtil.getFile("runtime/pricat/" + userLogin.userLoginId + "/" + sequenceNum + ".log"); >> +if (!logFile.exists()) { >> + context.logFileContent = "No log file found."; >> +} >> + >> +FileInputStream fis = new FileInputStream(logFile); >> +InputStreamReader isr = new InputStreamReader(fis); >> +BufferedReader br = new BufferedReader(isr); >> +logFileContent = ""; >> +while((s = br.readLine())!=null){ >> + logFileContent += s; >> +} >> +context.logFileContent = logFileContent; >> + >> >> Added: ofbiz/trunk/specialpurpose/pricat/ofbiz-component.xml >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/ofbiz-component.xml?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/ofbiz-component.xml (added) >> +++ ofbiz/trunk/specialpurpose/pricat/ofbiz-component.xml Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,46 @@ >> +<?xml version="1.0" encoding="UTF-8"?> >> +<!-- >> +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. >> +--> >> + >> +<ofbiz-component name="pricat" enabled="true" >> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> + xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/ofbiz-component.xsd"> >> + <resource-loader name="main" type="component"/> >> + <classpath type="dir" location="config"/> >> + >> + <!-- entity resources: model(s), eca(s), group, and data definitions --> >> + <entity-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel.xml"/> >> + <entity-resource type="data" reader-name="seed" loader="main" location="data/PricatData.xml"/> >> + >> + <webapp name="pricat" >> + title="PriCat" >> + server="default-server" >> + location="webapp/pricat" >> + app-bar-display="false" >> + base-permission="OFBTOOLS,CATALOG" >> + mount-point="/pricat" /> >> + >> + <webapp name="pricatdemo" >> + title="PriCat Demo" >> + server="default-server" >> + location="webapp/pricatdemo" >> + app-bar-display="false" >> + base-permission="OFBTOOLS,EXAMPLE" >> + mount-point="/pricatdemo" /> >> +</ofbiz-component> >> >> Added: ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractHtmlReport.java >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractHtmlReport.java?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractHtmlReport.java (added) >> +++ ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractHtmlReport.java Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,144 @@ >> +/******************************************************************************* >> + * 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. >> + *******************************************************************************/ >> +package org.apache.ofbiz.htmlreport; >> + >> +import java.io.IOException; >> +import javax.servlet.ServletException; >> +import javax.servlet.http.HttpServletRequest; >> +import javax.servlet.http.HttpServletResponse; >> +import javax.servlet.jsp.JspException; >> + >> +import org.apache.ofbiz.htmlreport.util.ReportStringUtil; >> + >> +/** >> + * HTML report output to be used for database create tables / drop tables operations. >> + * >> + */ >> +public abstract class AbstractHtmlReport extends HtmlReport { >> + >> + public static final String module = AbstractHtmlReport.class.getName(); >> + >> + public final static String THREAD_TYPE = "thread_type"; >> + >> + public final static String RUN_CREATETABLE_SCRIPT = "runcreatetablescript"; >> + >> + public final static String RUN_DROPTABLE_SCRIPT = "rundroptablescript"; >> + >> + public final static String FILE_REPORT_OUTPUT = "specialpurpose/pricat/webapp/pricat/ftl/report.ftl"; >> + >> + /** >> + * Constructs a new report using the provided locale for the output language. >> + * >> + * @param request HttpServletRequest >> + * @param response HttpServletResponse >> + */ >> + public AbstractHtmlReport(HttpServletRequest request, HttpServletResponse response) { >> + this(request, response, false, false); >> + } >> + >> + /** >> + * Constructs a new report using the provided locale for the output language. >> + * >> + * @param request HttpServletRequest >> + * @param response HttpServletResponse >> + * @param writeHtml if <code>true</code>, this report should generate HTML instead of JavaScript output >> + * @param isTransient If set to <code>true</code> nothing is kept in memory >> + */ >> + public AbstractHtmlReport(HttpServletRequest request, HttpServletResponse response, boolean writeHtml, boolean isTransient) { >> + super(request, response, writeHtml, isTransient); >> + } >> + >> + /** >> + * Prepare display an html report.<p> >> + * >> + * @throws JspException if dialog actions fail >> + * @throws IOException >> + * @throws ServletException >> + * @throws TemplateException >> + * @throws IOException >> + */ >> + public void prepareDisplayReport(HttpServletRequest request, HttpServletResponse response, String name, String dialogUri) throws IOException { >> + >> + if (ReportStringUtil.isNotEmpty(dialogUri)) { >> + setDialogRealUri(request, dialogUri); >> + } >> + >> + String action = getParamAction(request); >> + if (action == null) action = ""; >> + if (action.equals("reportend") || action.equals("cancel")) { >> + setParamAction("reportend"); >> + } else if (action.equals("reportupdate")) { >> + setParamAction("reportupdate"); >> + } else { >> + InterfaceReportThread thread = initializeThread(request, response, name); >> + thread.start(); >> + setParamAction("reportbegin"); >> + setParamThread(thread.getUUID().toString()); >> + } >> + } >> + >> + /** >> + * Initializes the report thread to use for this report.<p> >> + * >> + * @return the reported thread to use for this report. >> + */ >> + public abstract InterfaceReportThread initializeThread(HttpServletRequest request, HttpServletResponse response, String name); >> + >> + /** >> + * Set the report dialog uri. >> + * >> + * @param dialogUri >> + */ >> + public void setDialogRealUri(HttpServletRequest request, String dialogUri) { >> + request.setAttribute(DIALOG_URI, dialogUri); >> + } >> + >> + public static String checkButton(HttpServletRequest request, HttpServletResponse response) { >> + String action = request.getParameter("action"); >> + if (ReportStringUtil.isNotEmpty(action)) { >> + if (action.equalsIgnoreCase("ok")) { >> + request.removeAttribute(SESSION_REPORT_CLASS); >> + request.removeAttribute(DIALOG_URI); >> + return "ok"; >> + } else if (action.equalsIgnoreCase("cancel")) { >> + request.removeAttribute(SESSION_REPORT_CLASS); >> + request.removeAttribute(DIALOG_URI); >> + return "cancel"; >> + } >> + } >> + action = request.getParameter("ok"); >> + if (ReportStringUtil.isNotEmpty(action)) { >> + if (action.equalsIgnoreCase("ok")) { >> + request.removeAttribute(SESSION_REPORT_CLASS); >> + request.removeAttribute(DIALOG_URI); >> + return "ok"; >> + } >> + } >> + action = request.getParameter("cancel"); >> + if (ReportStringUtil.isNotEmpty(action)) { >> + if (action.equalsIgnoreCase("cancel")) { >> + request.removeAttribute(SESSION_REPORT_CLASS); >> + request.removeAttribute(DIALOG_URI); >> + return "cancel"; >> + } >> + } >> + >> + return "success"; >> + } >> +} >> \ No newline at end of file >> >> Added: ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReport.java >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReport.java?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReport.java (added) >> +++ ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReport.java Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,187 @@ >> +/******************************************************************************* >> + * 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. >> + *******************************************************************************/ >> +package org.apache.ofbiz.htmlreport; >> + >> +import java.util.ArrayList; >> +import java.util.List; >> +import java.util.Locale; >> + >> +/** >> + * Base report class. >> + * >> + */ >> +public abstract class AbstractReport implements InterfaceReport { >> + >> + /** Contains all error messages generated by the report. */ >> + private List<Object> errors; >> + >> + /** The locale this report is written in. */ >> + private Locale locale; >> + >> + /** Runtime of the report. */ >> + private long startTime; >> + >> + /** Contains all warning messages generated by the report. */ >> + private List<Object> warnings = new ArrayList<Object>(); >> + >> + /** Day constant. */ >> + private static final long DAYS = 1000 * 60 * 60 * 24; >> + >> + /** Hour constant. */ >> + private static final long HOURS = 1000 * 60 * 60; >> + >> + /** Minute constant. */ >> + private static final long MINUTES = 1000 * 60; >> + >> + /** Second constant. */ >> + private static final long SECONDS = 1000; >> + >> + public static final String SESSION_REPORT_CLASS = "OFBIZ_HTML_REPORT"; >> + >> + public void addError(Object obj) { >> + >> + errors.add(obj); >> + } >> + >> + public void addWarning(Object obj) { >> + >> + warnings.add(obj); >> + } >> + >> + public String formatRuntime() { >> + >> + long runtime = getRuntime(); >> + long seconds = (runtime / SECONDS) % 60; >> + long minutes = (runtime / MINUTES) % 60; >> + long hours = (runtime / HOURS) % 24; >> + long days = runtime / DAYS; >> + StringBuffer strBuf = new StringBuffer(); >> + >> + if (days > 0) { >> + if (days < 10) { >> + strBuf.append('0'); >> + } >> + strBuf.append(days); >> + strBuf.append(':'); >> + } >> + >> + if (hours < 10) { >> + strBuf.append('0'); >> + } >> + strBuf.append(hours); >> + strBuf.append(':'); >> + >> + if (minutes < 10) { >> + strBuf.append('0'); >> + } >> + strBuf.append(minutes); >> + strBuf.append(':'); >> + >> + if (seconds < 10) { >> + strBuf.append('0'); >> + } >> + strBuf.append(seconds); >> + >> + return strBuf.toString(); >> + } >> + >> + public List<Object> getErrors() { >> + return errors; >> + } >> + >> + public Locale getLocale() { >> + return locale; >> + } >> + >> + public long getRuntime() { >> + return System.currentTimeMillis() - startTime; >> + } >> + >> + public List<Object> getWarnings() { >> + return warnings; >> + } >> + >> + public boolean hasError() { >> + return (errors.size() > 0); >> + } >> + >> + public boolean hasWarning() { >> + return (warnings.size() > 0); >> + } >> + >> + public void resetRuntime() { >> + startTime = System.currentTimeMillis(); >> + } >> + >> + /** >> + * Initializes some member variables for this report.<p> >> + * >> + * @param locale the locale for this report >> + */ >> + protected void init(Locale locale) { >> + startTime = System.currentTimeMillis(); >> + this.locale = locale; >> + errors = new ArrayList<Object>(); >> + } >> + >> + /** >> + * Prints a String to the report.<p> >> + * >> + * @param value the String to add >> + */ >> + public void print(String value) { >> + print(value, FORMAT_DEFAULT); >> + } >> + >> + /** >> + * Prints a String to the report, using the indicated formatting.<p> >> + * >> + * Use the contants starting with <code>FORMAT</code> from this interface >> + * to indicate which formatting to use.<p> >> + * >> + * @param value the message container to add >> + * @param format the formatting to use for the output >> + */ >> + public abstract void print(String value, int format); >> + >> + /** >> + * Prints a String with line break to the report.<p> >> + * >> + * @param value the message container to add >> + */ >> + public void println(String value) { >> + >> + println(value, FORMAT_DEFAULT); >> + } >> + >> + /** >> + * Prints a String with line break to the report, using the indicated formatting.<p> >> + * >> + * Use the contants starting with <code>FORMAT</code> from this interface >> + * to indicate which formatting to use.<p> >> + * >> + * @param value the String to add >> + * @param format the formatting to use for the output >> + */ >> + public void println(String value, int format) { >> + print(value, format); >> + println(); >> + } >> + >> +} >> \ No newline at end of file >> >> Added: ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReportThread.java >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReportThread.java?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReportThread.java (added) >> +++ ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReportThread.java Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,217 @@ >> +/******************************************************************************* >> + * 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. >> + *******************************************************************************/ >> +package org.apache.ofbiz.htmlreport; >> + >> +import java.util.List; >> +import java.util.Locale; >> + >> +import javax.servlet.http.HttpServletRequest; >> +import javax.servlet.http.HttpServletResponse; >> + >> +import org.apache.ofbiz.base.util.UtilHttp; >> +import org.safehaus.uuid.EthernetAddress; >> +import org.safehaus.uuid.UUID; >> +import org.safehaus.uuid.UUIDGenerator; >> + >> +/** >> + * Provides a common Thread class for the reports. >> + * >> + */ >> +public abstract class AbstractReportThread extends Thread implements InterfaceReportThread { >> + >> + /** Indicates if the thread was already checked by the grim reaper. */ >> + private boolean doomed; >> + >> + /** The report that belongs to the thread. */ >> + private InterfaceReport report; >> + >> + /** The time this report is running. */ >> + private long startTime; >> + >> + private UUID uuid; >> + >> + private Locale locale; >> + >> + /** >> + * Constructs a new report Thread with the given name.<p> >> + * >> + * @param name the name of the Thread >> + */ >> + protected AbstractReportThread(HttpServletRequest request, HttpServletResponse response, String name) { >> + >> + super(Thread.currentThread().getThreadGroup(), name); >> + // report Threads are never daemon Threads >> + setDaemon(false); >> + // the session must not be updated when it is used in a report >> + EthernetAddress ethernetAddress = UUIDGenerator.getInstance().getDummyAddress(); >> + uuid = UUIDGenerator.getInstance().generateTimeBasedUUID(ethernetAddress); >> + >> + setName(name + " [" + uuid.toString() + "]"); >> + // new Threads are not doomed >> + doomed = false; >> + // set start time >> + startTime = System.currentTimeMillis(); >> + locale = UtilHttp.getLocale(request); >> + } >> + >> + >> + public UUID getUUID() { >> + return uuid; >> + } >> + >> + /** >> + * Adds an error object to the list of errors that occured during the report.<p> >> + * >> + * @param obj the error object >> + */ >> + public void addError(Object obj) { >> + >> + if (getReport() != null) { >> + getReport().addError(obj); >> + } >> + } >> + >> + /** >> + * Returns the error exception in case there was an error during the execution of >> + * this Thread, null otherwise.<p> >> + * >> + * @return the error exception in case there was an error, null otherwise >> + */ >> + public Throwable getError() { >> + >> + return null; >> + } >> + >> + /** >> + * Returns a list of all errors that occured during the report.<p> >> + * >> + * @return an error list that occured during the report >> + */ >> + public List<?> getErrors() { >> + >> + if (getReport() != null) { >> + return getReport().getErrors(); >> + } else { >> + return null; >> + } >> + } >> + >> + /** >> + * Returns the part of the report that is ready for output.<p> >> + * >> + * @return the part of the report that is ready for output >> + */ >> + public abstract String getReportUpdate(); >> + >> + /** >> + * Returns the time this report has been running.<p> >> + * >> + * @return the time this report has been running >> + */ >> + public synchronized long getRuntime() { >> + >> + if (doomed) { >> + return startTime; >> + } else { >> + return System.currentTimeMillis() - startTime; >> + } >> + } >> + >> + /** >> + * Returns if the report generated an error output.<p> >> + * >> + * @return true if the report generated an error, otherwise false >> + */ >> + public boolean hasError() { >> + >> + if (getReport() != null) { >> + return (getReport().getErrors().size() > 0); >> + } else { >> + return false; >> + } >> + } >> + >> + /** >> + * Returns true if this thread is already "doomed" to be deleted.<p> >> + * >> + * A OFBiz deamon Thread (the "Grim Reaper") will collect all >> + * doomed Threads, i.e. threads that are not longer active for some >> + * time.<p> >> + * >> + * @return true if this thread is already "doomed" to be deleted >> + */ >> + public synchronized boolean isDoomed() { >> + >> + if (isAlive()) { >> + // as long as the Thread is still active it is never doomed >> + return false; >> + } >> + if (doomed) { >> + // not longer active, and already doomed, so rest in peace... >> + return true; >> + } >> + // condemn the Thread to be collected by the grim reaper next time >> + startTime = getRuntime(); >> + doomed = true; >> + return false; >> + } >> + >> + /** >> + * Returns the report where the output of this Thread is written to.<p> >> + * >> + * @return the report where the output of this Thread is written to >> + */ >> + protected InterfaceReport getReport() { >> + >> + return report; >> + } >> + >> + /** >> + * Initialize a HTML report for this Thread.<p> >> + * >> + * @param locale the locale for the report output messages >> + */ >> + protected void initHtmlReport(HttpServletRequest request, HttpServletResponse response) { >> + >> + report = HtmlReport.getInstance(request, response); >> + ((HtmlReport) report).setParamThread(getUUID().toString()); >> + } >> + >> + /** >> + * Initialize a HTML report for this Thread.<p> >> + * >> + * @param locale the locale for the report output messages >> + */ >> + protected void initHtmlReport(HttpServletRequest request, HttpServletResponse response, boolean writeHtml, boolean isTransient) { >> + >> + report = HtmlReport.getInstance(request, response, writeHtml, isTransient); >> + ((HtmlReport) report).setParamThread(getUUID().toString()); >> + } >> + >> + protected void initHtmlReport(HttpServletRequest request, HttpServletResponse response, boolean writeHtml, boolean isTransient, String logFileName) { >> + >> + report = HtmlReport.getInstance(request, response, writeHtml, isTransient, logFileName); >> + ((HtmlReport) report).setParamThread(getUUID().toString()); >> + } >> + >> + protected Locale getLocale() { >> + return locale; >> + } >> + >> +} >> >> >> > > |
In reply to this post by Shi Jinghai-3
Love you Jacques.
I removed the duplicated labels and committed (rev. 1773058). Shi Jinghai -----邮件原件----- 发件人: Jacques Le Roux [mailto:[hidden email]] 发送时间: 2016年12月7日 17:16 收件人: [hidden email] 主题: Re: svn commit: r1770621 [1/5] - in /ofbiz/trunk/specialpurpose/pricat: ./ config/ data/ entitydef/ groovyScripts/ groovyScripts/pricat/ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/ofbiz/ src/main... Thanks Jinghai, I just noticed these labels are duplicated ExcelTableNoRow ExcelTableNoRow ExcelTableColumnNumberNotMatch ExcelTableColumnNumberNotMatch ExcelTableColumnNotMatch ExcelTableColumnNotMatch ExcelParsingRow ExcelParsingRow Jacques Le 05/12/2016 à 16:34, Shi Jinghai a écrit : > Thank you Jacques! > > I committed a fix to the 2 bugs in rev. 1772689. > > Kind Regards, > > Shi Jinghai > > > -----邮件原件----- > 发件人: Jacques Le Roux [mailto:[hidden email]] > 发送时间: 2016年12月5日 18:22 > 收件人: [hidden email] > 主题: Re: svn commit: r1770621 [1/5] - in /ofbiz/trunk/specialpurpose/pricat: ./ config/ data/ entitydef/ groovyScripts/ groovyScripts/pricat/ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/ofbiz/ src/main... > > Hi Shi, > > I just noticed EXCELIMPORT_USERLOGIN is 3 chars too long, EXCELIMPORT_USERLG would work > > Also there is a RelationNameNotUnique in same place. You should use titles (look for "title" in > https://cwiki.apache.org/confluence/display/OFBIZ/Entity+Engine+Guide) > > like in > > <relation type="one" fk-name="FATGL_PGL" title="Profit" rel-entity-name="GlAccount"> > <key-map field-name="profitGlAccountId" rel-field-name="glAccountId"/> > </relation> > <relation type="one" fk-name="FATGL_LGL" title="Loss" rel-entity-name="GlAccount"> > <key-map field-name="lossGlAccountId" rel-field-name="glAccountId"/> > </relation> > > 2016-12-05 10:57:12,910 |delegator-startup-1 |GenericDelegator |W| =-=-=-=-= Found 2 warnings when checking the entity definitions: > 2016-12-05 10:57:12,910 |delegator-startup-1 |GenericDelegator |W| [RelFKNameGT18] The foreign key named EXCELIMPORT_USERLOGIN > (length:21) was greater than 18 characters in length for relation UserLogin of entity ExcelImportHistory. > 2016-12-05 10:57:12,910 |delegator-startup-1 |GenericDelegator |W| [RelationNameNotUnique] Relation Enumeration of entity > ExcelImportHistory is not unique for that entity. > > Thanks > > Jacques > > > Le 21/11/2016 à 09:07, [hidden email] a écrit : >> Author: shijh >> Date: Mon Nov 21 08:07:57 2016 >> New Revision: 1770621 >> >> URL: http://svn.apache.org/viewvc?rev=1770621&view=rev >> Log: >> OFBIZ-9123 Add a PriCat component under specialpurpose >> >> Added: >> ofbiz/trunk/specialpurpose/pricat/ >> ofbiz/trunk/specialpurpose/pricat/build.gradle >> ofbiz/trunk/specialpurpose/pricat/config/ >> ofbiz/trunk/specialpurpose/pricat/config/PricatUiLabels.xml >> ofbiz/trunk/specialpurpose/pricat/config/pricat.properties >> ofbiz/trunk/specialpurpose/pricat/data/ >> ofbiz/trunk/specialpurpose/pricat/data/PricatData.xml >> ofbiz/trunk/specialpurpose/pricat/entitydef/ >> ofbiz/trunk/specialpurpose/pricat/entitydef/entitymodel.xml >> ofbiz/trunk/specialpurpose/pricat/groovyScripts/ >> ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/ >> ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImport.groovy >> ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImportLog.groovy >> ofbiz/trunk/specialpurpose/pricat/ofbiz-component.xml >> ofbiz/trunk/specialpurpose/pricat/src/ >> ofbiz/trunk/specialpurpose/pricat/src/main/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractHtmlReport.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReport.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReportThread.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/HtmlReport.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/InterfaceReport.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/InterfaceReportThread.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/sample/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/sample/SampleHtmlReport.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/sample/SampleHtmlThread.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/util/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/util/ReportEncoder.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/util/ReportStringUtil.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/AbstractPricatParser.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/InterfacePricatParser.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/PricatEvents.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/PricatParseExcelHtmlReport.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/PricatParseExcelHtmlThread.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/sample/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/sample/SamplePricatEvents.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/pricat/sample/SamplePricatParser.java >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/poi/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/poi/xssf/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/poi/xssf/usermodel/ >> ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/poi/xssf/usermodel/OFBizPricatUtil.java >> ofbiz/trunk/specialpurpose/pricat/webapp/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/WEB-INF/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/WEB-INF/controller.xml >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/WEB-INF/web.xml >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/error/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/error/error.jsp >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/ExcelImportHistoryReport.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/pricatreport.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/report.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/viewExcelImportHistory.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/ftl/viewExcelImportLog.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/includes/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/includes/pricat.css >> ofbiz/trunk/specialpurpose/pricat/webapp/pricat/index.jsp >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/WEB-INF/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/WEB-INF/controller.xml >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/WEB-INF/web.xml >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/downloads/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/downloads/SamplePricatTemplate_V1.1.xlsx (with props) >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/error/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/error/error.jsp >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/ >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/SamplePricat.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/countdownreport.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/countupreport.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/main.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/ftl/parsePricatExcel.ftl >> ofbiz/trunk/specialpurpose/pricat/webapp/pricatdemo/index.jsp >> ofbiz/trunk/specialpurpose/pricat/widget/ >> ofbiz/trunk/specialpurpose/pricat/widget/CommonScreens.xml >> ofbiz/trunk/specialpurpose/pricat/widget/PriCatDemoMenus.xml >> ofbiz/trunk/specialpurpose/pricat/widget/PriCatMenus.xml >> ofbiz/trunk/specialpurpose/pricat/widget/SampleScreens.xml >> >> Added: ofbiz/trunk/specialpurpose/pricat/build.gradle >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/build.gradle?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/build.gradle (added) >> +++ ofbiz/trunk/specialpurpose/pricat/build.gradle Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,25 @@ >> +/* >> + * 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. >> + */ >> +dependencies { >> + pluginLibsCompile 'org.safehaus.jug:jug:2.0.0:asl' >> + pluginLibsCompile 'org.apache.poi:poi-ooxml:3.14' >> + pluginLibsCompile 'org.apache.poi:poi-ooxml-schemas:3.14' >> + pluginLibsCompile 'org.apache.poi:poi-excelant:3.14' >> + pluginLibsCompile 'org.apache.poi:poi-scratchpad:3.14' >> +} >> \ No newline at end of file >> >> Added: ofbiz/trunk/specialpurpose/pricat/config/PricatUiLabels.xml >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/config/PricatUiLabels.xml?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/config/PricatUiLabels.xml (added) >> +++ ofbiz/trunk/specialpurpose/pricat/config/PricatUiLabels.xml Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,532 @@ >> +<?xml version="1.0" encoding="UTF-8"?> >> +<!-- >> +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. >> +--> >> +<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> >> + <property key="PriCatCompanyName"> >> + <value xml:lang="en">OFBiz: PriCat Demo</value> >> + <value xml:lang="zh">OFBizï¼ä»·ç®è¡¨</value> >> + </property> >> + <property key="PriCatApplication"> >> + <value xml:lang="en">PriCat</value> >> + <value xml:lang="zh">ä»·ç®è¡¨</value> >> + </property> >> + <property key="PriCatDemoCompanyName"> >> + <value xml:lang="en">OFBiz: PriCat Demo</value> >> + <value xml:lang="zh">OFBizï¼ä»·ç®è¡¨æ¼ç¤º</value> >> + </property> >> + <property key="PriCatDemoApplication"> >> + <value xml:lang="en">PriCat Demo</value> >> + <value xml:lang="zh">ä»·ç®è¡¨æ¼ç¤º</value> >> + </property> >> + <property key="PriCatDemoCountDown"> >> + <value xml:lang="en">HTML Report Demo - Count Down</value> >> + <value xml:lang="zh">页é¢è¾åºæ¼ç¤º - å计æ°</value> >> + </property> >> + <property key="PriCatDemoCountUp"> >> + <value xml:lang="en">HTML Report Demo - Count Up</value> >> + <value xml:lang="zh">页é¢è¾åºæ¼ç¤º - æ£è®¡æ°</value> >> + </property> >> + <property key="PriCatDemoParseSamplePricat"> >> + <value xml:lang="en">PriCat Demo - Parse PriCat</value> >> + <value xml:lang="zh">ä»·ç®è¡¨æ¼ç¤º - 解æä»·ç®è¡¨</value> >> + </property> >> + <property key="PriCatDemoMainPage"> >> + <value xml:lang="en">PriCat Demo Main Page</value> >> + <value xml:lang="zh">ä»·ç®è¡¨æ¼ç¤ºé¦é¡µ</value> >> + </property> >> + <property key="PricatDemoMessage"> >> + <value xml:lang="en">PriCat Demo includes 2 HTML Report Demo and 1 Parse PriCat File Demo.</value> >> + <value xml:lang="zh">ä»·ç®è¡¨æ¼ç¤ºå å«äº2个页é¢è¾åºæ¼ç¤ºå1个解æä»·ç®è¡¨æ件çæ¼ç¤ºã</value> >> + </property> >> + <property key="ParseSamplePricatDemo"> >> + <value xml:lang="en">Parse Sample PriCat Demo</value> >> + <value xml:lang="zh">æ¼ç¤ºè§£ææ ·ä¾ä»·ç®è¡¨æ件</value> >> + </property> >> + <property key="SamplePricatTemplate"> >> + <value xml:lang="en">Sample PriCat Template</value> >> + <value xml:lang="zh">ä»·ç®è¡¨æ ·ä¾æ¨¡æ¿</value> >> + </property> >> + <property key="DownloadPricatTemplate"> >> + <value xml:lang="en">Download PriCat Template</value> >> + <value xml:lang="zh">ä¸è½½ä»·ç®è¡¨æ¨¡æ¿</value> >> + </property> >> + <property key="UploadPricat"> >> + <value xml:lang="en">Upload PriCat</value> >> + <value xml:lang="zh">ä¸ä¼ ä»·ç®è¡¨</value> >> + </property> >> + <property key="ParseSamplePricat"> >> + <value xml:lang="en">Parse Sample PriCat</value> >> + <value xml:lang="zh">解ææ ·ä¾ä»·ç®è¡¨</value> >> + </property> >> + <property key="ExcelTemplateType"> >> + <value xml:lang="en">Template Type</value> >> + <value xml:lang="zh">模æ¿ç±»å</value> >> + </property> >> + <property key="SamplePricatType"> >> + <value xml:lang="en">Sample PriCat</value> >> + <value xml:lang="zh">æ ·ä¾ä»·ç®è¡¨</value> >> + </property> >> + <property key="OFBizPricatType"> >> + <value xml:lang="en">OFBiz Type</value> >> + <value xml:lang="zh">OFBizç±»å</value> >> + </property> >> + <property key="StartStoreExcel"> >> + <value xml:lang="en">Storing your upload file to server ... </value> >> + <value xml:lang="zh">æ£å¨æä¸ä¼ æ件åå°æå¡å¨ä¸ ... </value> >> + </property> >> + <property key="NoFileUploaded"> >> + <value xml:lang="en">no file uploaded!</value> >> + <value xml:lang="zh">没æä¸ä¼ æ件ï¼</value> >> + </property> >> + <property key="StartParsePricat"> >> + <value xml:lang="en">Start parsing the uploaded file ...</value> >> + <value xml:lang="zh">å¼å§è§£æä¸ä¼ çæ件 ...</value> >> + </property> >> + <property key="PricatParseCompleted"> >> + <value xml:lang="en">... parsing completed</value> >> + <value xml:lang="zh">... å®æ解æ</value> >> + </property> >> + <property key="CurrentUserLoginNoFacility"> >> + <value xml:lang="en">Cannot find any facility for current user(userLoginId: [{0}]).</value> >> + <value xml:lang="zh">没ææ¾å°å½åç¨æ·ï¼userLoginId: [{0}]ï¼çä»»ä½ä¸ä¸ªä»åºã</value> >> + </property> >> + <property key="GetCurrentUserLoginFacility"> >> + <value xml:lang="en">Getting facilities of current user ... </value> >> + <value xml:lang="zh">æ£å¨è·å¾å½åç¨æ·çä»åº ... </value> >> + </property> >> + <property key="FacilityFoundForCurrentUserLogin"> >> + <value xml:lang="en">({0}) Facility found for current user: {1}[{2}].</value> >> + <value xml:lang="zh">({0}) æ¾å°å½åç¨æ·çä»åºï¼{1}[{2}]ã</value> >> + </property> >> + <property key="FacilityNotBelongToYou"> >> + <value xml:lang="en">Facility {0}[{1}] does not belong to you. Please use a facility of yours.</value> >> + <value xml:lang="zh">ä»åº{0}[{1}]ä¸å±äºä½ ï¼è¯·æ¹ä¸ºä½ èªå·±çä»åºã</value> >> + </property> >> + <property key="ExcelTemplateTypeSelected"> >> + <value xml:lang="en">The selected Excel template type: </value> >> + <value xml:lang="zh">éæ©çExcel模æ¿ç±»åï¼</value> >> + </property> >> + <property key="FacilityIdSelected"> >> + <value xml:lang="en">The selected facility Id: </value> >> + <value xml:lang="zh">éæ©çä»åºç¼å·ï¼</value> >> + </property> >> + <property key="ParsePricatFileStatement"> >> + <value xml:lang="en">Loading file {0} ... </value> >> + <value xml:lang="zh">æ£å¨è¯»å ¥æ件{0} ... </value> >> + </property> >> + <property key="PricatSuggestion"> >> + <value xml:lang="en">Please make sure your Excel file is in format of Microsoft Excel 2007 and later. And then try again.</value> >> + <value xml:lang="zh">è¯·ç¡®è®¤ä½ çExcelæä»¶æ ¼å¼æ¯å¾®è½¯Office 2007ææ´æ°çæ¬çï¼ç¶åéè¯ä¸ä¸ã</value> >> + </property> >> + <property key="CheckPricatHasSheet"> >> + <value xml:lang="en">Checking whether your file contains at least a sheet ... </value> >> + <value xml:lang="zh">æ£å¨æ£æ¥ä½ çæ件æ¯å¦å å«è³å°ä¸ä¸ªè¡¨å ... </value> >> + </property> >> + <property key="PricatVersionNotSupport"> >> + <value xml:lang="en">Pricat Version {0} is not supported.</value> >> + <value xml:lang="zh">è¿ä¸è½æ¯æè¿ä¸ªä»·æ ¼åç±»ççæ¬{0}ã</value> >> + </property> >> + <property key="PricatTableOnlyParse1stSheet"> >> + <value xml:lang="en">Only the 1st sheet will be parsed.</value> >> + <value xml:lang="zh">åªè§£æ第ä¸å¼ 表ã</value> >> + </property> >> + <property key="PricatTableNoSheet"> >> + <value xml:lang="en">There's no sheet in the PriCat file.</value> >> + <value xml:lang="zh">ä»·æ ¼åç±»æ件ä¸æ²¡æ表ã</value> >> + </property> >> + <property key="PricatTableRows"> >> + <value xml:lang="en">Sheet [{2}] has {0} rows of header and {1} rows of data.</value> >> + <value xml:lang="zh">表å[{2}]æ{0}è¡è¡¨å¤´å{1}è¡æ°æ®ã</value> >> + </property> >> + <property key="PricatTableRow"> >> + <value xml:lang="en">Sheet [{0}] has only 1 row of data.</value> >> + <value xml:lang="zh">表å[{0}]åªæä¸è¡æ°æ®ã</value> >> + </property> >> + <property key="ExcelTableNoRow"> >> + <value xml:lang="en">There's no row in sheet [{0}].</value> >> + <value xml:lang="zh">表å[{0}]ä¸æ²¡ææ°æ®ã</value> >> + </property> >> + <property key="ExcelTableColumnNumberNotMatch"> >> + <value xml:lang="en">The sheet has {0} columns, it's not the same as sample sheet's {1}.</value> >> + <value xml:lang="zh">表åæ{0}åï¼ä¸æ ·ä¾è¡¨åç{1}åä¸åã</value> >> + </property> >> + <property key="ExcelTableColumnNotMatch"> >> + <value xml:lang="en">The column {0} has a name {1}, it's not identical to {2}.</value> >> + <value xml:lang="zh">å{0}çååæ¯{1}ï¼åºæ¯{2}ã</value> >> + </property> >> + <property key="ExcelParsingRow"> >> + <value xml:lang="en">({0}) parsing {1} ...</value> >> + <value xml:lang="zh">({0}) æ£å¨è§£æ {1} ...</value> >> + </property> >> + <property key="StartCheckPricatVersion"> >> + <value xml:lang="en">Check PriCat file's version ... </value> >> + <value xml:lang="zh">æ£æ¥ä»·æ ¼åç±»æ件ççæ¬ ... </value> >> + </property> >> + <property key="StartCheckCurrencyId"> >> + <value xml:lang="en">Checking currencyId ... </value> >> + <value xml:lang="zh">æ£å¨æ£æ¥å¸ç§ ... </value> >> + </property> >> + <property key="CurrencyIdRequired"> >> + <value xml:lang="en">CurrencyId is required. Please set it at row 3 column 2.</value> >> + <value xml:lang="zh">å¿ é¡»è®¾ç½®è´§å¸ã请设置å¨ç¬¬ä¸è¡ã第äºåã</value> >> + </property> >> + <property key="CurrencyIdIs"> >> + <value xml:lang="en">CurrencyId is {0}</value> >> + <value xml:lang="zh">è´§å¸æ¯{0}</value> >> + </property> >> + <property key="CurrencyIdNotFound"> >> + <value xml:lang="en">CurrencyId {0} cannot be found in this system.</value> >> + <value xml:lang="zh">æ¬ç³»ç»ä¸æ¾ä¸å°è´§å¸{0}ã</value> >> + </property> >> + <property key="CurrencyIdNotCurrency"> >> + <value xml:lang="en">{0} is not a currency in this system.</value> >> + <value xml:lang="zh">{0}å¨è¿ä¸ªç³»ç»éä¸æ¯è´§å¸ã</value> >> + </property> >> + <property key="HeaderContainsError"> >> + <value xml:lang="en">There are errors in PriCat header. Please correct it and upload it again.</value> >> + <value xml:lang="zh">表头ä¸æé误ï¼è¯·ä¿®æ¹åéæ°ä¸ä¼ ã</value> >> + </property> >> + <property key="PricatNoDataRows"> >> + <value xml:lang="en">There are no data in your PriCat file, no further operation is required.</value> >> + <value xml:lang="zh">ä½ çä»·æ ¼åç±»æ件ä¸æ²¡ææ°æ®ï¼ä¸ååæ°æ®è§£æäºã</value> >> + </property> >> + <property key="DataContainsError"> >> + <value xml:lang="en">There are errors in data of your PriCat file. Please correct it and upload it again.</value> >> + <value xml:lang="zh">ä»·æ ¼åç±»æ件çæ°æ®ä¸æé误ï¼è¯·ä¿®æ¹åéæ°ä¸ä¼ ã</value> >> + </property> >> + <property key="CellTypeNotString"> >> + <value xml:lang="en">The type of cell[{0}, {1}] is not String. The cell value will be changed to String type.</value> >> + <value xml:lang="zh">åå æ ¼[{0}, {1}]ä¸æ¯å符类åãå°æè¿ä¸ªåå æ ¼çå¼è½¬ä¸ºå符类åã</value> >> + </property> >> + <property key="CellTypeNotNumeric"> >> + <value xml:lang="en">The type of cell[{0}, {1}] is not numeric. The cell value will be changed to numeric type.</value> >> + <value xml:lang="zh">åå æ ¼[{0}, {1}]ä¸æ¯æ°åç±»åãå°æè¿ä¸ªåå æ ¼çå¼è½¬ä¸ºæ°åç±»åã</value> >> + </property> >> + <property key="ErrorParseValueToNumeric"> >> + <value xml:lang="en">Unable to parse the value to a numeric.</value> >> + <value xml:lang="zh">æ æ³æè¿ä¸ªåå æ ¼çå¼è½¬ä¸ºæ°åã</value> >> + </property> >> + <property key="StartCheckHeaderColNum"> >> + <value xml:lang="en">Checking whether the number of header columns matches the template's of version {0} ... </value> >> + <value xml:lang="zh">æ£å¨æ£æ¥è¡¨å¤´çåæ°æ¯å¦ä¸çæ¬{0}ç模æ¿ä¸è´ ... </value> >> + </property> >> + <property key="HeaderColNumNotMatch"> >> + <value xml:lang="en">The number of columns of {0} template header columns, column number {1} and imported template columns are not consistent ... </value> >> + <value xml:lang="zh">模æ¿è¡¨å¤´çåæ°{0}å,ä¸å¯¼å ¥ç模æ¿çåæ°{1}åä¸ä¸è´ ... </value> >> + </property> >> + <property key="StartCheckHeaderColLabel"> >> + <value xml:lang="en">Checking whether the header labels match the template's of version {0} ... </value> >> + <value xml:lang="zh">æ£å¨æ£æ¥è¡¨å¤´çæåæ¯å¦ä¸çæ¬{0}ç模æ¿ä¸è´ ... </value> >> + </property> >> + <property key="HeaderColLabelNotMatch"> >> + <value xml:lang="en">The lable of row {0} colum {1} is [{2}], it does not match [{3}] as expected.</value> >> + <value xml:lang="zh">è¡{0}å{1}çæåæ¯[{2}]ï¼ä¸ææç[{3}]ä¸ä¸è´ã</value> >> + </property> >> + <property key="HeaderColNumShortThanRequired"> >> + <value xml:lang="en">Table header column number less than the required {0}</value> >> + <value xml:lang="zh">表头åæ°å°äºè¦æ±ç{0}å</value> >> + </property> >> + <property key="UseHeaderColNum"> >> + <value xml:lang="en">the first {0} column labels will be checked</value> >> + <value xml:lang="zh">å°æ£æ¥è¡¨å¤´çå{0}åçæ ç¾</value> >> + </property> >> + <property key="WriteCommentsBackToExcel"> >> + <value xml:lang="en">Writing errors as commonts to your Excel file ... </value> >> + <value xml:lang="zh">æ£å¨æé误信æ¯ä½ä¸ºæ¹æ³¨åå°ä½ çExcelæ件é ... </value> >> + </property> >> + <property key="CLEANUP_LOGANDEXCEL_BEGIN"> >> + <value xml:lang="en">Start to clean log and commented excel files</value> >> + <value xml:lang="zh">å¼å§æ¸ çæ¥å¿åæ¹æ³¨è¿çExcelæ件</value> >> + </property> >> + <property key="HistoryLessThan"> >> + <value xml:lang="en">history entries less than {0}</value> >> + <value xml:lang="zh">åå²è®°å½å°äº{0}æ¡</value> >> + </property> >> + <property key="HistoryEntryToRemove"> >> + <value xml:lang="en">{0} entries to remove</value> >> + <value xml:lang="zh">è¦å é¤{0}æ¡è®°å½</value> >> + </property> >> + <property key="FacilityNameNotMatchId"> >> + <value xml:lang="en">In the system, the name of facilityId[{0}] is [{1}], NOT [{2}]. Please correct it and import again.</value> >> + <value xml:lang="zh">ç³»ç»ä¸ï¼ä»åºæ è¯[{0}]çå称æ¯[{1}]ï¼ä¸æ¯[{2}]ã请修æ¹åéæ°å¯¼å ¥ã</value> >> + </property> >> + <property key="ExcelEmptyRow"> >> + <value xml:lang="en">empty row</value> >> + <value xml:lang="zh">空è¡</value> >> + </property> >> + >> + <property key="REPORT_EXCEPTION"> >> + <value xml:lang="en">Exception: </value> >> + <value xml:lang="zh">æå¤é误ï¼</value> >> + </property> >> + <property key="DIALOG_BUTTON_OK"> >> + <value xml:lang="en">OK</value> >> + <value xml:lang="zh">ç¡®å®</value> >> + </property> >> + <property key="DIALOG_BUTTON_CANCEL"> >> + <value xml:lang="en">Cancel</value> >> + <value xml:lang="zh">åæ¶</value> >> + </property> >> + <property key="DIALOG_BUTTON_EDIT"> >> + <value xml:lang="en">Edit</value> >> + <value xml:lang="zh">ç¼è¾</value> >> + </property> >> + <property key="DIALOG_BUTTON_DISCARD"> >> + <value xml:lang="en">Discard</value> >> + <value xml:lang="zh">æ¾å¼</value> >> + </property> >> + <property key="DIALOG_BUTTON_CLOSE"> >> + <value xml:lang="en">Close</value> >> + <value xml:lang="zh">å ³é</value> >> + </property> >> + <property key="DIALOG_BUTTON_ADVANCE"> >> + <value xml:lang="en">Advance</value> >> + <value xml:lang="zh">é«çº§</value> >> + </property> >> + <property key="DIALOG_BUTTON_SET"> >> + <value xml:lang="en">Set</value> >> + <value xml:lang="zh">设置</value> >> + </property> >> + <property key="DIALOG_BUTTON_BACK"> >> + <value xml:lang="en">Back</value> >> + <value xml:lang="zh">è¿å</value> >> + </property> >> + <property key="DIALOG_BUTTON_CONTINUE"> >> + <value xml:lang="en">Continue</value> >> + <value xml:lang="zh">继ç»</value> >> + </property> >> + <property key="DIALOG_BUTTON_DETAIL"> >> + <value xml:lang="en">Detail</value> >> + <value xml:lang="zh">详ç»</value> >> + </property> >> + <property key="DIALOG_BUTTON_DOWNLOAD"> >> + <value xml:lang="en">Download</value> >> + <value xml:lang="zh">ä¸è½½</value> >> + </property> >> + <property key="FORMAT_DEFAULT"> >> + <value xml:lang="en">({0}) This is default format.</value> >> + <value xml:lang="zh">({0}) è¿æ¯ç¼ºçæ ¼å¼ã</value> >> + </property> >> + <property key="FORMAT_WARNING"> >> + <value xml:lang="en">({0}) This is warning format.</value> >> + <value xml:lang="zh">({0}) è¿æ¯è¦åæ ¼å¼ã</value> >> + </property> >> + <property key="FORMAT_HEADLINE"> >> + <value xml:lang="en">({0}) This is headline format.</value> >> + <value xml:lang="zh">({0}) è¿æ¯æ é¢æ ¼å¼ã</value> >> + </property> >> + <property key="FORMAT_NOTE"> >> + <value xml:lang="en">({0}) This is note format.</value> >> + <value xml:lang="zh">({0}) è¿æ¯è®°å½æ ¼å¼ã</value> >> + </property> >> + <property key="FORMAT_OK"> >> + <value xml:lang="en">({0}) This is OK format.</value> >> + <value xml:lang="zh">({0}) è¿æ¯æ£ç¡®æ¶çæ ¼å¼ã</value> >> + </property> >> + <property key="FORMAT_ERROR"> >> + <value xml:lang="en">({0}) This is error format.</value> >> + <value xml:lang="zh">({0}) è¿æ¯é误æ¶çæ ¼å¼ã</value> >> + </property> >> + <property key="FORMAT_THROWABLE"> >> + <value xml:lang="en">({0}) This is throwable format.</value> >> + <value xml:lang="zh">({0}) è¿æ¯æåºé误çæ ¼å¼ã</value> >> + </property> >> + <property key="START_COUNT_DOWN"> >> + <value xml:lang="en">Start counting down ...</value> >> + <value xml:lang="zh">å¼å§åæ° ...</value> >> + </property> >> + <property key="COUNT_COMPLETED"> >> + <value xml:lang="en">... counting completed.</value> >> + <value xml:lang="zh">... å®æ计æ°ã</value> >> + </property> >> + <property key="START_COUNT_UP"> >> + <value xml:lang="en">String counting up ...</value> >> + <value xml:lang="zh">å¼å§æ£è®¡æ° ...</value> >> + </property> >> + <property key="RPT_ERROR"> >> + <value xml:lang="en">Error: </value> >> + <value xml:lang="zh">é误ï¼</value> >> + </property> >> + <property key="RPT_ERROR_DETAILS"> >> + <value xml:lang="en">Details: </value> >> + <value xml:lang="zh">详ç»ï¼</value> >> + </property> >> + <property key="ParseExcelDemo"> >> + <value xml:lang="en">Click here to see Import Excel demo</value> >> + <value xml:lang="zh">ç¹å»è¿éçå¯¼å ¥Excelæ¼ç¤º</value> >> + </property> >> + <property key="StartParseExcel"> >> + <value xml:lang="en">Start parsing a sample excel file ...</value> >> + <value xml:lang="zh">å¼å§è§£æä¸ä¸ªExcelæ ·ä¾æ件 ...</value> >> + </property> >> + <property key="ExcelParseCompleted"> >> + <value xml:lang="en">... parsing completed</value> >> + <value xml:lang="zh">... å®æ解æ</value> >> + </property> >> + <property key="ExcelTableOnlyParse1stSheet"> >> + <value xml:lang="en">Only the 1st sheet will be parsed.</value> >> + <value xml:lang="zh">åªè§£æ第ä¸å¼ 表ã</value> >> + </property> >> + <property key="ExcelTableNoSheet"> >> + <value xml:lang="en">There's no sheet in the excel.</value> >> + <value xml:lang="zh">Excelä¸æ²¡æ表ã</value> >> + </property> >> + <property key="ExcelTableRows"> >> + <value xml:lang="en">Sheet {1} has {0} rows.</value> >> + <value xml:lang="zh">表å{1}æ{0}è¡æ°æ®ã</value> >> + </property> >> + <property key="ExcelTableRow"> >> + <value xml:lang="en">Sheet {0} has only 1 row.</value> >> + <value xml:lang="zh">表å{0}åªæä¸è¡æ°æ®ã</value> >> + </property> >> + <property key="ExcelTableNoRow"> >> + <value xml:lang="en">There's no row in sheet {0}.</value> >> + <value xml:lang="zh">表å{0}ä¸æ²¡ææ°æ®ã</value> >> + </property> >> + <property key="ExcelTableColumnNumberNotMatch"> >> + <value xml:lang="en">The sheet has {0} columns, it's not the same as sample sheet's {1}.</value> >> + <value xml:lang="zh">表åæ{0}åï¼ä¸æ ·ä¾è¡¨åç{1}åä¸åã</value> >> + </property> >> + <property key="ExcelTableColumnNotMatch"> >> + <value xml:lang="en">The column {0} has a name {1}, it's not identical to {2}.</value> >> + <value xml:lang="zh">å{0}çååæ¯{1}ï¼åºæ¯{2}ã</value> >> + </property> >> + <property key="ExcelParsingRow"> >> + <value xml:lang="en">({0}) parsing {1} ...</value> >> + <value xml:lang="zh">({0}) æ£å¨è§£æ {1} ...</value> >> + </property> >> + <property key="ParseExcelEncoding"> >> + <value xml:lang="en"> Using {0} to parsing the excel file.</value> >> + <value xml:lang="zh"> æ£å¨ä½¿ç¨{0}解æExcelæ件ã</value> >> + </property> >> + <property key="ParseExcelToolStatement"> >> + <value xml:lang="en"> Using {0} to parsing the {1} format excel file...</value> >> + <value xml:lang="zh"> æ£å¨ä½¿ç¨{0}解æ{1}æ ¼å¼çExcelæ件...</value> >> + </property> >> + <property key="ok"> >> + <value xml:lang="en">ok</value> >> + <value xml:lang="zh">å®æ</value> >> + </property> >> + <property key="error"> >> + <value xml:lang="en">error</value> >> + <value xml:lang="zh">åºéäº</value> >> + </property> >> + <property key="skipped"> >> + <value xml:lang="en">skipped</value> >> + <value xml:lang="zh">è·³è¿</value> >> + </property> >> + >> + <property key="ExcelImportHistoryList"> >> + <value xml:lang="en">Excel Import History</value> >> + <value xml:lang="zh">Excelå¯¼å ¥æä½åå²è®°å½</value> >> + </property> >> + <property key="OnlyYourOwnImportHistoryDisplayed"> >> + <value xml:lang="en">(Only current login user's history can be displayed)</value> >> + <value xml:lang="zh">ï¼ä» è½æ¾ç¤ºå½åç¨æ·çå¯¼å ¥æä½åå²è®°å½ï¼</value> >> + </property> >> + <property key="SerialNumber"> >> + <value xml:lang="en">No.</value> >> + <value xml:lang="zh">åºå·</value> >> + </property> >> + <property key="Filename"> >> + <value xml:lang="en">Filename</value> >> + <value xml:lang="zh">æ件å</value> >> + </property> >> + <property key="FromDate"> >> + <value xml:lang="en">Start Time</value> >> + <value xml:lang="zh">å¼å§æ¶é´</value> >> + </property> >> + <property key="ThruDate"> >> + <value xml:lang="en">End Time</value> >> + <value xml:lang="zh">ç»ææ¶é´</value> >> + </property> >> + <property key="ThruReasonId"> >> + <value xml:lang="en">End Reason</value> >> + <value xml:lang="zh">ç»æåå </value> >> + </property> >> + <property key="ImportStatus"> >> + <value xml:lang="en">Import Status</value> >> + <value xml:lang="zh">å¯¼å ¥ç¶æ</value> >> + </property> >> + <property key="Actions"> >> + <value xml:lang="en">Actions</value> >> + <value xml:lang="zh">æä½</value> >> + </property> >> + <property key="ExcelImportTipNoData"> >> + <value xml:lang="en">No excel import history data.</value> >> + <value xml:lang="zh">没æExcelå¯¼å ¥åå²è®°å½</value> >> + </property> >> + <property key="EXCEL_IMPORTING"> >> + <value xml:lang="en">Importing</value> >> + <value xml:lang="zh">æ£å¨å¯¼å ¥</value> >> + </property> >> + <property key="EXCEL_IMPORTED"> >> + <value xml:lang="en">Imported</value> >> + <value xml:lang="zh">å·²å¯¼å ¥</value> >> + </property> >> + <property key="EXCEL_IMPORT_SUCCESS"> >> + <value xml:lang="en">Success</value> >> + <value xml:lang="zh">æå</value> >> + </property> >> + <property key="EXCEL_IMPORT_STOPPED"> >> + <value xml:lang="en">Stopped by user</value> >> + <value xml:lang="zh">ç¨æ·ç»æ¢äºå¯¼å ¥</value> >> + </property> >> + <property key="EXCEL_IMPORT_ERROR"> >> + <value xml:lang="en">Stopped by error</value> >> + <value xml:lang="zh">å åºéèåæ¢äºå¯¼å ¥</value> >> + </property> >> + <property key="EXCEL_IMPORT_QUEST"> >> + <value xml:lang="en">Data error found</value> >> + <value xml:lang="zh">æ°æ®ä¸æé误</value> >> + </property> >> + <property key="ViewExcelImportLogContent"> >> + <value xml:lang="en">View log content</value> >> + <value xml:lang="zh">æµè§æ¥å¿å 容</value> >> + </property> >> + <property key="DownloadCommentedExcel"> >> + <value xml:lang="en">Download excel</value> >> + <value xml:lang="zh">ä¸è½½Excel</value> >> + </property> >> + <property key="ViewExcelImportHistory"> >> + <value xml:lang="en">View Import History</value> >> + <value xml:lang="zh">å¯¼å ¥æä½åå²è®°å½</value> >> + </property> >> + <property key="ViewPricatLog"> >> + <value xml:lang="en">View</value> >> + <value xml:lang="zh">æµè§</value> >> + </property> >> + <property key="DownloadCommentedPricat"> >> + <value xml:lang="en">Download</value> >> + <value xml:lang="zh">ä¸è½½</value> >> + </property> >> + >> + <property key="ReasonOK"> >> + <value xml:lang="en">OK</value> >> + </property> >> + <property key="ReasonStopped"> >> + <value xml:lang="en">[S]</value> >> + </property> >> + <property key="ReasonError"> >> + <value xml:lang="en">[E]</value> >> + </property> >> + <property key="ReasonWarning"> >> + <value xml:lang="en">[W]</value> >> + </property> >> +</resource> >> >> Added: ofbiz/trunk/specialpurpose/pricat/config/pricat.properties >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/config/pricat.properties?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/config/pricat.properties (added) >> +++ ofbiz/trunk/specialpurpose/pricat/config/pricat.properties Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,24 @@ >> +############################################################################### >> +# 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. >> +############################################################################### >> + >> +# the latest pricat version to parse and download >> +pricat.latest.version=V1.1 >> + >> +# the max number of pricat history files to keep >> +pricat.history.max.filenumber=20 >> >> Added: ofbiz/trunk/specialpurpose/pricat/data/PricatData.xml >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/data/PricatData.xml?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/data/PricatData.xml (added) >> +++ ofbiz/trunk/specialpurpose/pricat/data/PricatData.xml Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,34 @@ >> +<?xml version="1.0" encoding="UTF-8"?> >> +<!-- >> +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. >> +--> >> +<entity-engine-xml> >> + <!-- Enumeration for thruReasonId of ExcelImportHistory entity --> >> + <EnumerationType description="Excel import thru reasons" enumTypeId="EXCEL_IMPORT_THRU" hasTable="N" parentTypeId=""/> >> + >> + <Enumeration enumId="EXCEL_IMPORT_SUCCESS" enumCode="EXCEL_IMPORT_SUCCESS" description="Excel Imported Successfully" sequenceId="01" enumTypeId="EXCEL_IMPORT_THRU"/> >> + <Enumeration enumId="EXCEL_IMPORT_STOPPED" enumCode="EXCEL_IMPORT_STOPPED" description="Excel Imported Stopped by user" sequenceId="02" enumTypeId="EXCEL_IMPORT_THRU"/> >> + <Enumeration enumId="EXCEL_IMPORT_ERROR" enumCode="EXCEL_IMPORT_ERROR" description="Excel Imported Exits Errorly" sequenceId="03" enumTypeId="EXCEL_IMPORT_THRU"/> >> + <Enumeration enumId="EXCEL_IMPORT_QUEST" enumCode="EXCEL_IMPORT_QUEST" description="Excel Imported Has Error Messages" sequenceId="04" enumTypeId="EXCEL_IMPORT_THRU"/> >> + >> + <!-- Enumeration for statusId of ExcelImportHistory entity --> >> + <EnumerationType description="Excel import status" enumTypeId="EXCEL_IMPORT_STATUS" hasTable="N" parentTypeId=""/> >> + >> + <Enumeration enumId="EXCEL_IMPORTING" enumCode="EXCEL_IMPORTING" description="Excel is being imported in progress" sequenceId="01" enumTypeId="EXCEL_IMPORT_STATUS"/> >> + <Enumeration enumId="EXCEL_IMPORTED" enumCode="EXCEL_IMPORTED" description="Excel has been imported" sequenceId="02" enumTypeId="EXCEL_IMPORT_STATUS"/> >> +</entity-engine-xml> >> >> Added: ofbiz/trunk/specialpurpose/pricat/entitydef/entitymodel.xml >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/entitydef/entitymodel.xml?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/entitydef/entitymodel.xml (added) >> +++ ofbiz/trunk/specialpurpose/pricat/entitydef/entitymodel.xml Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,48 @@ >> +<?xml version="1.0" encoding="UTF-8"?> >> +<!-- >> +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. >> +--> >> +<entitymodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> + xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/entitymodel.xsd"> >> + >> + <entity entity-name="ExcelImportHistory" >> + package-name="org.ofbiz.product.catalog" >> + title="Excel Import History Entity"> >> + <field name="userLoginId" type="id-vlong-ne"></field> >> + <field name="sequenceNum" type="numeric"></field> >> + <field name="fileName" type="value"></field> >> + <field name="fromDate" type="date-time"></field> >> + <field name="thruDate" type="date-time"></field> >> + <field name="thruReasonId" type="id-ne"></field> >> + <field name="statusId" type="id-ne"></field> >> + <field name="threadName" type="name"></field> >> + <field name="logFileName" type="value"></field> >> + <prim-key field="userLoginId"/> >> + <prim-key field="sequenceNum"/> >> + <relation rel-entity-name="UserLogin" type="one" fk-name="EXCELIMPORT_USERLOGIN"> >> + <key-map field-name="userLoginId"/> >> + </relation> >> + <relation rel-entity-name="Enumeration" type="one" fk-name="EXCELIMPORT_STATUS"> >> + <key-map field-name="statusId" rel-field-name="enumId"/> >> + </relation> >> + <relation rel-entity-name="Enumeration" type="one" fk-name="EXCELIMPORT_REASON"> >> + <key-map field-name="thruReasonId" rel-field-name="enumId"/> >> + </relation> >> + </entity> >> + >> +</entitymodel> >> >> Added: ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImport.groovy >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImport.groovy?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImport.groovy (added) >> +++ ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImport.groovy Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,24 @@ >> +/* >> + * 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. >> + */ >> +import org.apache.ofbiz.base.util.*; >> + >> +module = "FindMyExcelImport.groovy"; >> + >> +data = delegator.findByAnd("ExcelImportHistory", [userLoginId : userLogin.userLoginId], ["sequenceNum DESC"], false); >> +context.data = data; >> >> Added: ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImportLog.groovy >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImportLog.groovy?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImportLog.groovy (added) >> +++ ofbiz/trunk/specialpurpose/pricat/groovyScripts/pricat/FindMyExcelImportLog.groovy Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,53 @@ >> +/* >> + * 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. >> + */ >> +import org.apache.ofbiz.base.util.*; >> +import java.io.FileInputStream; >> + >> +module = "FindMyExcelImport.groovy"; >> + >> +context.borderStyle = "2px inset /*begin-color ThreeDHighlight*/#ffffff/*end-color*/"; >> +context.borderSimpleStyle = "2px solid /*begin-color ThreeDFace*/#f0f0f0/*end-color*/"; >> + >> +sequenceNum = request.getParameter("sequenceNum"); >> + >> +if (sequenceNum == null) { >> + context.logFileContent = "No sequenceNum parameter found."; >> + return; >> +} >> + >> +historyEntry = delegator.findOne("ExcelImportHistory", [sequenceNum : Long.valueOf(sequenceNum), userLoginId : userLogin.userLoginId], false); >> +if (historyEntry == null) { >> + context.logFileContent = "No import history found."; >> + return; >> +} >> + >> +logFile = FileUtil.getFile("runtime/pricat/" + userLogin.userLoginId + "/" + sequenceNum + ".log"); >> +if (!logFile.exists()) { >> + context.logFileContent = "No log file found."; >> +} >> + >> +FileInputStream fis = new FileInputStream(logFile); >> +InputStreamReader isr = new InputStreamReader(fis); >> +BufferedReader br = new BufferedReader(isr); >> +logFileContent = ""; >> +while((s = br.readLine())!=null){ >> + logFileContent += s; >> +} >> +context.logFileContent = logFileContent; >> + >> >> Added: ofbiz/trunk/specialpurpose/pricat/ofbiz-component.xml >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/ofbiz-component.xml?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/ofbiz-component.xml (added) >> +++ ofbiz/trunk/specialpurpose/pricat/ofbiz-component.xml Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,46 @@ >> +<?xml version="1.0" encoding="UTF-8"?> >> +<!-- >> +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. >> +--> >> + >> +<ofbiz-component name="pricat" enabled="true" >> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> + xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/ofbiz-component.xsd"> >> + <resource-loader name="main" type="component"/> >> + <classpath type="dir" location="config"/> >> + >> + <!-- entity resources: model(s), eca(s), group, and data definitions --> >> + <entity-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel.xml"/> >> + <entity-resource type="data" reader-name="seed" loader="main" location="data/PricatData.xml"/> >> + >> + <webapp name="pricat" >> + title="PriCat" >> + server="default-server" >> + location="webapp/pricat" >> + app-bar-display="false" >> + base-permission="OFBTOOLS,CATALOG" >> + mount-point="/pricat" /> >> + >> + <webapp name="pricatdemo" >> + title="PriCat Demo" >> + server="default-server" >> + location="webapp/pricatdemo" >> + app-bar-display="false" >> + base-permission="OFBTOOLS,EXAMPLE" >> + mount-point="/pricatdemo" /> >> +</ofbiz-component> >> >> Added: ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractHtmlReport.java >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractHtmlReport.java?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractHtmlReport.java (added) >> +++ ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractHtmlReport.java Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,144 @@ >> +/******************************************************************************* >> + * 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. >> + *******************************************************************************/ >> +package org.apache.ofbiz.htmlreport; >> + >> +import java.io.IOException; >> +import javax.servlet.ServletException; >> +import javax.servlet.http.HttpServletRequest; >> +import javax.servlet.http.HttpServletResponse; >> +import javax.servlet.jsp.JspException; >> + >> +import org.apache.ofbiz.htmlreport.util.ReportStringUtil; >> + >> +/** >> + * HTML report output to be used for database create tables / drop tables operations. >> + * >> + */ >> +public abstract class AbstractHtmlReport extends HtmlReport { >> + >> + public static final String module = AbstractHtmlReport.class.getName(); >> + >> + public final static String THREAD_TYPE = "thread_type"; >> + >> + public final static String RUN_CREATETABLE_SCRIPT = "runcreatetablescript"; >> + >> + public final static String RUN_DROPTABLE_SCRIPT = "rundroptablescript"; >> + >> + public final static String FILE_REPORT_OUTPUT = "specialpurpose/pricat/webapp/pricat/ftl/report.ftl"; >> + >> + /** >> + * Constructs a new report using the provided locale for the output language. >> + * >> + * @param request HttpServletRequest >> + * @param response HttpServletResponse >> + */ >> + public AbstractHtmlReport(HttpServletRequest request, HttpServletResponse response) { >> + this(request, response, false, false); >> + } >> + >> + /** >> + * Constructs a new report using the provided locale for the output language. >> + * >> + * @param request HttpServletRequest >> + * @param response HttpServletResponse >> + * @param writeHtml if <code>true</code>, this report should generate HTML instead of JavaScript output >> + * @param isTransient If set to <code>true</code> nothing is kept in memory >> + */ >> + public AbstractHtmlReport(HttpServletRequest request, HttpServletResponse response, boolean writeHtml, boolean isTransient) { >> + super(request, response, writeHtml, isTransient); >> + } >> + >> + /** >> + * Prepare display an html report.<p> >> + * >> + * @throws JspException if dialog actions fail >> + * @throws IOException >> + * @throws ServletException >> + * @throws TemplateException >> + * @throws IOException >> + */ >> + public void prepareDisplayReport(HttpServletRequest request, HttpServletResponse response, String name, String dialogUri) throws IOException { >> + >> + if (ReportStringUtil.isNotEmpty(dialogUri)) { >> + setDialogRealUri(request, dialogUri); >> + } >> + >> + String action = getParamAction(request); >> + if (action == null) action = ""; >> + if (action.equals("reportend") || action.equals("cancel")) { >> + setParamAction("reportend"); >> + } else if (action.equals("reportupdate")) { >> + setParamAction("reportupdate"); >> + } else { >> + InterfaceReportThread thread = initializeThread(request, response, name); >> + thread.start(); >> + setParamAction("reportbegin"); >> + setParamThread(thread.getUUID().toString()); >> + } >> + } >> + >> + /** >> + * Initializes the report thread to use for this report.<p> >> + * >> + * @return the reported thread to use for this report. >> + */ >> + public abstract InterfaceReportThread initializeThread(HttpServletRequest request, HttpServletResponse response, String name); >> + >> + /** >> + * Set the report dialog uri. >> + * >> + * @param dialogUri >> + */ >> + public void setDialogRealUri(HttpServletRequest request, String dialogUri) { >> + request.setAttribute(DIALOG_URI, dialogUri); >> + } >> + >> + public static String checkButton(HttpServletRequest request, HttpServletResponse response) { >> + String action = request.getParameter("action"); >> + if (ReportStringUtil.isNotEmpty(action)) { >> + if (action.equalsIgnoreCase("ok")) { >> + request.removeAttribute(SESSION_REPORT_CLASS); >> + request.removeAttribute(DIALOG_URI); >> + return "ok"; >> + } else if (action.equalsIgnoreCase("cancel")) { >> + request.removeAttribute(SESSION_REPORT_CLASS); >> + request.removeAttribute(DIALOG_URI); >> + return "cancel"; >> + } >> + } >> + action = request.getParameter("ok"); >> + if (ReportStringUtil.isNotEmpty(action)) { >> + if (action.equalsIgnoreCase("ok")) { >> + request.removeAttribute(SESSION_REPORT_CLASS); >> + request.removeAttribute(DIALOG_URI); >> + return "ok"; >> + } >> + } >> + action = request.getParameter("cancel"); >> + if (ReportStringUtil.isNotEmpty(action)) { >> + if (action.equalsIgnoreCase("cancel")) { >> + request.removeAttribute(SESSION_REPORT_CLASS); >> + request.removeAttribute(DIALOG_URI); >> + return "cancel"; >> + } >> + } >> + >> + return "success"; >> + } >> +} >> \ No newline at end of file >> >> Added: ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReport.java >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReport.java?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReport.java (added) >> +++ ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReport.java Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,187 @@ >> +/******************************************************************************* >> + * 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. >> + *******************************************************************************/ >> +package org.apache.ofbiz.htmlreport; >> + >> +import java.util.ArrayList; >> +import java.util.List; >> +import java.util.Locale; >> + >> +/** >> + * Base report class. >> + * >> + */ >> +public abstract class AbstractReport implements InterfaceReport { >> + >> + /** Contains all error messages generated by the report. */ >> + private List<Object> errors; >> + >> + /** The locale this report is written in. */ >> + private Locale locale; >> + >> + /** Runtime of the report. */ >> + private long startTime; >> + >> + /** Contains all warning messages generated by the report. */ >> + private List<Object> warnings = new ArrayList<Object>(); >> + >> + /** Day constant. */ >> + private static final long DAYS = 1000 * 60 * 60 * 24; >> + >> + /** Hour constant. */ >> + private static final long HOURS = 1000 * 60 * 60; >> + >> + /** Minute constant. */ >> + private static final long MINUTES = 1000 * 60; >> + >> + /** Second constant. */ >> + private static final long SECONDS = 1000; >> + >> + public static final String SESSION_REPORT_CLASS = "OFBIZ_HTML_REPORT"; >> + >> + public void addError(Object obj) { >> + >> + errors.add(obj); >> + } >> + >> + public void addWarning(Object obj) { >> + >> + warnings.add(obj); >> + } >> + >> + public String formatRuntime() { >> + >> + long runtime = getRuntime(); >> + long seconds = (runtime / SECONDS) % 60; >> + long minutes = (runtime / MINUTES) % 60; >> + long hours = (runtime / HOURS) % 24; >> + long days = runtime / DAYS; >> + StringBuffer strBuf = new StringBuffer(); >> + >> + if (days > 0) { >> + if (days < 10) { >> + strBuf.append('0'); >> + } >> + strBuf.append(days); >> + strBuf.append(':'); >> + } >> + >> + if (hours < 10) { >> + strBuf.append('0'); >> + } >> + strBuf.append(hours); >> + strBuf.append(':'); >> + >> + if (minutes < 10) { >> + strBuf.append('0'); >> + } >> + strBuf.append(minutes); >> + strBuf.append(':'); >> + >> + if (seconds < 10) { >> + strBuf.append('0'); >> + } >> + strBuf.append(seconds); >> + >> + return strBuf.toString(); >> + } >> + >> + public List<Object> getErrors() { >> + return errors; >> + } >> + >> + public Locale getLocale() { >> + return locale; >> + } >> + >> + public long getRuntime() { >> + return System.currentTimeMillis() - startTime; >> + } >> + >> + public List<Object> getWarnings() { >> + return warnings; >> + } >> + >> + public boolean hasError() { >> + return (errors.size() > 0); >> + } >> + >> + public boolean hasWarning() { >> + return (warnings.size() > 0); >> + } >> + >> + public void resetRuntime() { >> + startTime = System.currentTimeMillis(); >> + } >> + >> + /** >> + * Initializes some member variables for this report.<p> >> + * >> + * @param locale the locale for this report >> + */ >> + protected void init(Locale locale) { >> + startTime = System.currentTimeMillis(); >> + this.locale = locale; >> + errors = new ArrayList<Object>(); >> + } >> + >> + /** >> + * Prints a String to the report.<p> >> + * >> + * @param value the String to add >> + */ >> + public void print(String value) { >> + print(value, FORMAT_DEFAULT); >> + } >> + >> + /** >> + * Prints a String to the report, using the indicated formatting.<p> >> + * >> + * Use the contants starting with <code>FORMAT</code> from this interface >> + * to indicate which formatting to use.<p> >> + * >> + * @param value the message container to add >> + * @param format the formatting to use for the output >> + */ >> + public abstract void print(String value, int format); >> + >> + /** >> + * Prints a String with line break to the report.<p> >> + * >> + * @param value the message container to add >> + */ >> + public void println(String value) { >> + >> + println(value, FORMAT_DEFAULT); >> + } >> + >> + /** >> + * Prints a String with line break to the report, using the indicated formatting.<p> >> + * >> + * Use the contants starting with <code>FORMAT</code> from this interface >> + * to indicate which formatting to use.<p> >> + * >> + * @param value the String to add >> + * @param format the formatting to use for the output >> + */ >> + public void println(String value, int format) { >> + print(value, format); >> + println(); >> + } >> + >> +} >> \ No newline at end of file >> >> Added: ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReportThread.java >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReportThread.java?rev=1770621&view=auto >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReportThread.java (added) >> +++ ofbiz/trunk/specialpurpose/pricat/src/main/java/org/apache/ofbiz/htmlreport/AbstractReportThread.java Mon Nov 21 08:07:57 2016 >> @@ -0,0 +1,217 @@ >> +/******************************************************************************* >> + * 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. >> + *******************************************************************************/ >> +package org.apache.ofbiz.htmlreport; >> + >> +import java.util.List; >> +import java.util.Locale; >> + >> +import javax.servlet.http.HttpServletRequest; >> +import javax.servlet.http.HttpServletResponse; >> + >> +import org.apache.ofbiz.base.util.UtilHttp; >> +import org.safehaus.uuid.EthernetAddress; >> +import org.safehaus.uuid.UUID; >> +import org.safehaus.uuid.UUIDGenerator; >> + >> +/** >> + * Provides a common Thread class for the reports. >> + * >> + */ >> +public abstract class AbstractReportThread extends Thread implements InterfaceReportThread { >> + >> + /** Indicates if the thread was already checked by the grim reaper. */ >> + private boolean doomed; >> + >> + /** The report that belongs to the thread. */ >> + private InterfaceReport report; >> + >> + /** The time this report is running. */ >> + private long startTime; >> + >> + private UUID uuid; >> + >> + private Locale locale; >> + >> + /** >> + * Constructs a new report Thread with the given name.<p> >> + * >> + * @param name the name of the Thread >> + */ >> + protected AbstractReportThread(HttpServletRequest request, HttpServletResponse response, String name) { >> + >> + super(Thread.currentThread().getThreadGroup(), name); >> + // report Threads are never daemon Threads >> + setDaemon(false); >> + // the session must not be updated when it is used in a report >> + EthernetAddress ethernetAddress = UUIDGenerator.getInstance().getDummyAddress(); >> + uuid = UUIDGenerator.getInstance().generateTimeBasedUUID(ethernetAddress); >> + >> + setName(name + " [" + uuid.toString() + "]"); >> + // new Threads are not doomed >> + doomed = false; >> + // set start time >> + startTime = System.currentTimeMillis(); >> + locale = UtilHttp.getLocale(request); >> + } >> + >> + >> + public UUID getUUID() { >> + return uuid; >> + } >> + >> + /** >> + * Adds an error object to the list of errors that occured during the report.<p> >> + * >> + * @param obj the error object >> + */ >> + public void addError(Object obj) { >> + >> + if (getReport() != null) { >> + getReport().addError(obj); >> + } >> + } >> + >> + /** >> + * Returns the error exception in case there was an error during the execution of >> + * this Thread, null otherwise.<p> >> + * >> + * @return the error exception in case there was an error, null otherwise >> + */ >> + public Throwable getError() { >> + >> + return null; >> + } >> + >> + /** >> + * Returns a list of all errors that occured during the report.<p> >> + * >> + * @return an error list that occured during the report >> + */ >> + public List<?> getErrors() { >> + >> + if (getReport() != null) { >> + return getReport().getErrors(); >> + } else { >> + return null; >> + } >> + } >> + >> + /** >> + * Returns the part of the report that is ready for output.<p> >> + * >> + * @return the part of the report that is ready for output >> + */ >> + public abstract String getReportUpdate(); >> + >> + /** >> + * Returns the time this report has been running.<p> >> + * >> + * @return the time this report has been running >> + */ >> + public synchronized long getRuntime() { >> + >> + if (doomed) { >> + return startTime; >> + } else { >> + return System.currentTimeMillis() - startTime; >> + } >> + } >> + >> + /** >> + * Returns if the report generated an error output.<p> >> + * >> + * @return true if the report generated an error, otherwise false >> + */ >> + public boolean hasError() { >> + >> + if (getReport() != null) { >> + return (getReport().getErrors().size() > 0); >> + } else { >> + return false; >> + } >> + } >> + >> + /** >> + * Returns true if this thread is already "doomed" to be deleted.<p> >> + * >> + * A OFBiz deamon Thread (the "Grim Reaper") will collect all >> + * doomed Threads, i.e. threads that are not longer active for some >> + * time.<p> >> + * >> + * @return true if this thread is already "doomed" to be deleted >> + */ >> + public synchronized boolean isDoomed() { >> + >> + if (isAlive()) { >> + // as long as the Thread is still active it is never doomed >> + return false; >> + } >> + if (doomed) { >> + // not longer active, and already doomed, so rest in peace... >> + return true; >> + } >> + // condemn the Thread to be collected by the grim reaper next time >> + startTime = getRuntime(); >> + doomed = true; >> + return false; >> + } >> + >> + /** >> + * Returns the report where the output of this Thread is written to.<p> >> + * >> + * @return the report where the output of this Thread is written to >> + */ >> + protected InterfaceReport getReport() { >> + >> + return report; >> + } >> + >> + /** >> + * Initialize a HTML report for this Thread.<p> >> + * >> + * @param locale the locale for the report output messages >> + */ >> + protected void initHtmlReport(HttpServletRequest request, HttpServletResponse response) { >> + >> + report = HtmlReport.getInstance(request, response); >> + ((HtmlReport) report).setParamThread(getUUID().toString()); >> + } >> + >> + /** >> + * Initialize a HTML report for this Thread.<p> >> + * >> + * @param locale the locale for the report output messages >> + */ >> + protected void initHtmlReport(HttpServletRequest request, HttpServletResponse response, boolean writeHtml, boolean isTransient) { >> + >> + report = HtmlReport.getInstance(request, response, writeHtml, isTransient); >> + ((HtmlReport) report).setParamThread(getUUID().toString()); >> + } >> + >> + protected void initHtmlReport(HttpServletRequest request, HttpServletResponse response, boolean writeHtml, boolean isTransient, String logFileName) { >> + >> + report = HtmlReport.getInstance(request, response, writeHtml, isTransient, logFileName); >> + ((HtmlReport) report).setParamThread(getUUID().toString()); >> + } >> + >> + protected Locale getLocale() { >> + return locale; >> + } >> + >> +} >> >> >> > > |
Free forum by Nabble | Edit this page |