2

Yapı ve Şablonu java koduyla progrmatik olarak oluşturmam gerekiyor. Aşağıdaki kod parçacıklarını kullandım.Liferay 6 içinde Yapılandırma ve Şablon nasıl oluşturulur?

Yapısı:

public void createStructure(String userName,long userId){ 
     log_.info("Inside create structure "); 
     long structureId=115203; 
     DDMStructure ddmStructure=DDMStructureLocalServiceUtil.createDDMStructure(structureId); 
     ddmStructure.setName("MigrationStructure"); 
     ddmStructure.setDescription("This Structure created programatically"); 
     ddmStructure.setUserId(userId); 
     ddmStructure.setUserName(userName); 
     File fXmlFile = new File("D:/FilesDataMigration/structure.xml");   
     try {   
      Document document = SAXReaderUtil.read(fXmlFile); 
      ddmStructure.setDocument(document); 
      DDMStructureLocalServiceUtil.addDDMStructure(ddmStructure); 
     }catch (DocumentException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SystemException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     log_.info("Inside create structure done"); 
    } 

Şablon: ile

public void createTemplate(String userName,long userId){ 
     log_.info("Inside create template "); 
     long templateId=12504; 
     DDMTemplate ddmTemplate=DDMTemplateLocalServiceUtil.createDDMTemplate(templateId); 
     ddmTemplate.setName("MigrationTemplate"); 
     ddmTemplate.setDescription("This Template created programatically"); 
     ddmTemplate.setUserId(userId); 
     ddmTemplate.setUserName(userName); 

     try { 
      BufferedReader br = new BufferedReader(new FileReader("D:/FilesDataMigration/template.txt")); 
      StringBuilder sb = new StringBuilder(); 
      String line = br.readLine(); 

      while (line != null) { 
       sb.append(line); 
       sb.append(System.lineSeparator()); 
       line = br.readLine(); 
      } 
      String script = sb.toString(); 
      ddmTemplate.setScript(script); 
      DDMTemplateLocalServiceUtil.addDDMTemplate(ddmTemplate); 
     }catch(IOException e){ 
      e.printStackTrace(); 
     } catch (SystemException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     log_.info("Inside create template done"); 
    } 

yukarıdaki parçacıkları herhangi istisnalar dışında düzgün yürütme Ama Kontrol içerik bölümünde göremiyorsanız beni Panel.Suggest Eğer bir sorun varsa

+0

Her şeyden önce, ne tür yapılar veya şablonlar oluşturmak istiyorsunuz? –

+1

"classNameId", "language" vb. Gerekli tüm özellikleri ayarlamıyorsunuz, –

+2

Ayrıca, DDMStructure ddmStructure = DDMStructureUtil.create (CounterLocalServiceUtil.increment()); ve "DDMTemplate ddmTemplate = DDMTemplateUtil.create Sabit kodlanmış kimlikleri yerine (CounterLocalServiceUtil.increment()); –

cevap

3

Sizinle ilgili birkaç sorun var. kod: Sen groupId, companyId, classNameId, structureKey, dates vb

  • gibi tüm gerekli özellikleri, ayar değildir

    1. DDMStructure veya DDMTemplateString argüman (Liferay 6.2 GA2) kabul etmek için herhangi setName ve setDescription yöntem yoktur. Bunun yerine, her ikisi de Map<Locale, String> kabul etmek için yalnızca setNameMap ve setDescriptionMap yöntemleri vardır. Aşağıdaki olarak kodlanmış kimlikleri yerine

    2. Kullanım dinamik kimlikleri (structureId ve templateId),: DDMStructure ddmStructure = DDMStructureUtil.create(CounterLocalServiceUtil.increment()); ve classNameId için DDMTemplate ddmTemplate = DDMTemplateUtil.create(CounterLocalServiceUtil.increment());

    3. , onu bu kadar kullanarak alabilirsiniz değeri gibi:
      ClassName className = ClassNameLocalServiceUtil.getClassName("com.liferay.portlet.journal.model.Journ‌​alArticle"); long classNameId = className.getClassNameId();

    4. Ayrıca daha iyi ekleyerek yerine nüfuslu nesnenin üzerinde update kullanmak: DDMStructureUtil.update(ddmStructure);Eğer ThemeDisplay nesneye erişimi varsave DDMTemplateUtil.update(ddmTemplate);

    Ek olarak, ondan groupId, companyId, userId, userFullName alabilirsiniz. Ayrıca, createDate ve modifiedDate özellikleri için new Date() özelliklerini ayarlayın.

  • +0

    Çok teşekkürler Zaman ve sabrınız. Bazı şeyleri ayarladım ama burada güncelleme yapmadım. Burada çok iyi anladınız ve çok net bir şekilde anladınız ve en iyi uygulamaların bazılarını öğrendiniz. –

    +0

    Rica ederim, Mutlu Kodlama! –

    +0

    Her şeyi ayarlayabiliyorum ama Stirng beklediği gibi yapı anahtarı hakkında. Bu kodun yanlış kodlanmasını önlemek için. –

    İlgili konular