Динамически создавать Java-класс для формы Lotus Notes - PullRequest
0 голосов
/ 28 сентября 2011

Я хочу перенести базу данных Lotus Notes в salesforce.используя доминго, я могу получить формы, поля форм, документы и т. д. Как только я получу форму с ее полями и их типами данных, я хочу создать класс для этой формы.Вот так я хочу создать класс для каждой формы.Каждый документ может быть сделан как экземпляр для этого класса.Я зацикливаю базу данных, чтобы получить формы, а затем зацикливаю формы, чтобы получить их поля (используя для циклов), теперь есть способ создать класс для этой формы прямо в этом цикле for динамически, так что каждая форма может быть представлена ​​как класс,Пожалуйста, помогите

Ответы [ 5 ]

1 голос
/ 29 сентября 2011

Я считаю, что это возможно сделать через API метаданных Salesforce, но я еще не использовал этот API. У меня были люди, которые рекомендовали его мне как средство для решения подобных задач.

Я бы поставил под сомнение преимущества такого общего переноса. Если у вас нет такого количества объектов и полей для создания, что простая задача создания объекта и поля займет значительное время, в чем преимущество? Помните, что вы можете получать и устанавливать поля в стандартных и пользовательских объектах Salesforce без написания кода для этих объектов (по крайней мере, в Apex). Аналогично, каждый объект автоматически получает стандартный контроллер для обработки отображения и стандартных операций.

Вы должны спросить себя, достаточно ли чисты ваши данные и модель данных для генерации кода. Уверены ли вы? Действительно действительно уверен? Как насчет того поля количества виджетов, которое было добавлено в объект отгрузки еще в 2005 году для решения проблемы с отчетностью? Никто не использует это больше. Все еще хотите это в своем новом БД?

Оба раза я переносил базы данных Notes в Salesforce, я экспортировал в CSV, и кто-то другой загрузил данные. Первый экспорт был просто экспорт контактов и учетных записей. Во второй раз я написал свой собственный экспортер Lotusscript, так как мне нужно было исправить некоторые проблемы с данными перед импортом Salesforce. Второй раз загрузка была сделана с загрузчиком данных. Если бы я сам загружал данные, я бы использовал Инструменты спроса. Это гораздо более промышленный инструмент. Одни только функции дедупликации могут спасти вам написание большого количества пользовательского кода.

1 голос
/ 28 сентября 2011

Это, безусловно, возможно, но не лучше ли в этом случае использовать структуру data , например, вложенные карты / списки?Когда вы динамически создаете классы, вы также должны динамически создавать код, который работает с этими классами, иначе вы ничего не получите по сравнению с общей структурой данных.

0 голосов
/ 29 сентября 2011

Код создания классов скелета Java, что вы делаете, правильно.Ниже приведена моя быстрая и непроверенная версия:

Sub Initialize  
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView   
    Dim views As Variant
    Dim notesToJavaFieldMap List As String  
    Dim doc As NotesDocument
    Dim count As Integer
    count = 0
    Dim formsAlreadyProcessed(count) As String
    Set db = session.CurrentDatabase

    views = db.Views
    Forall v In views
        If v.IsDefaultView Then
            Set view = v
            Exit Forall
        End If
    End Forall

    'Declare a complete on to one mapping here for all Notes item types to Java datatypes
    notesToJavaFieldMap(" RichText") = "String"
    notesToJavaFieldMap("Text") = "String"
    notesToJavaFieldMap("Time/Date") = "Date"

    Dim authorItem As NotesItem 
    Dim itemType As String
    Dim itemName As String
    Dim formName As String  
    Dim fileNum As Integer  
    Dim fileName As String

    Set doc = view.GetFirstDocument 
    While Not(doc Is Nothing)       
        fileNum% = Freefile()       
        If Arraygetindex(formsAlreadyProcessed,doc.form(0)) Is Not Null Then
            formsAlreadyProcessed(Ubound(formsAlreadyProcessed)) = doc.form(0)
            Redim Preserve formsAlreadyProcessed(Ubound(formsAlreadyProcessed) + 1)
            fileName$ = doc.form(0) +".java"        
            Open fileName$ For Output As fileNum%           

            Write #fileNum%, "package com.mypackage;"
            Write #fileNum%, "\n \r"
            Write #fileNum%, " public class " + fileName
            Write #fileNum%, "\n \r"

            Forall item In doc.Items
                itemType = item.type
                itemName = item.name                    
                Write #fileNum%, "private " +notesToJavaFieldMap(itemType) + " " +itemName
                Write #fileNum%, "\n \r"
            End Forall      
            Close fileNum%
        End If      
    Wend

End Sub

Вы можете открыть эти java-файлы класса с помощью IDE, например eclipse, и импортировать пропущенный импорт, набрав Ctrl+ O, а также сгенерировать get и sets.
Для самих данных выгрузите их как cvs и экспортируйте в.

У меня не было конструктора Lotus Notes, поэтому этот код не тестировался.

0 голосов
/ 29 сентября 2011

Вам нужно будет написать это самостоятельно, экспортировав элементы формы Lotus Notes domino как DXL , а затем преобразовать их в собственные объекты формы для использования с SalesForce.

0 голосов
/ 28 сентября 2011

Я считаю, что слово «динамически» вводит в заблуждение в этом случае. Возможно, я неправильно читаю вопрос, но кажется, что рассматриваемые формы имеют фиксированный формат, и слово «динамически» используется вместо возможности создания экземпляра объекта данного класса (то есть, как работают Java и многие другие языки). ).

При этом я бы согласился с michael667 в том, что это, безусловно, возможно. Преобразование данных формы (представление) в объект (модель) в памяти через логику кода (контроллер) - это то, что я (и многие другие) выполняю как повседневную работу. Помните MVC при разработке, и у вас все будет хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...