Показать сообщение отдельно
Старый 29.07.2004, 12:06   #25  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Если кому то интересно - могу выложить job, который по классу (или всему АОТ) генерит файл, который с виду похож на "java", но реализация методов на X++. По данному файлу практически любое case средство способно сгенерить диаграмму классов.
Вот job, который делает то - о чем я писал. Вариант далеко не окончательный, но для моих целей хватает:

PHP код:
static void ExportObjectToJava(Args _args)
{
    
AsciiIo     file;
    
str         objectName 'InventCostItemDim';
    
DictClass   dictClass;
    
DictMethod  dictMethod;
    
int         methodCount;
    
int         parmCount;
    
str         parmDescription;
    
int         ij,v;
    
str         s;
    
TreeNode    treeNode;
    
Info        info = new Info();
    ;
    
dictClass = new DictClass(classname2id(objectName));
    
file = new AsciiIo('d:\\' objectName '.java''w');

    
file.write('public class ' dictClass.name());
    
file.write('{');

    for (
i=1i<=dictClass.objectMethodCnt(); i++)
    {
        
dictMethod dictClass.objectMethodObject(i);
        
parmCount dictMethod.parameterCnt();

        
// собираем строку параметров метода
        
parmDescription '';
        for (
j=1j<=parmCountj++)
        {
           if (
parmDescription != ''parmDescription parmDescription ',';
           
parmDescription parmDescription enum2str(dictMethod.parameterType(j)) + ' p' int2str(j);
        }

        
file.write(   enum2str(dictMethod.accessSpecifier()) + ' ' +                                    // модификатор доступа
                      
enum2str(dictMethod.returnType()) + ' ' +     // return type
                      
dictClass.objectMethod(i) +                   // method name
                      
'(' parmDescription ')');

        
treeNode info.rootNode();
        
treeNode treeNode::findNode('\\Classes\\' dictClass.name() + '\\' dictClass.objectMethod(i));

        
file.write('  {');
        
file.write(treeNode.AOTgetSource());
        
file.write('  }');
    }

    
// статические методы
    
dictClass.staticMethodCnt();
    for (
i=1i<=vi++)
    {
        
dictMethod dictClass.staticMethodObject(i);
        
dictMethod.name();
             
file.write'static ' +  enum2str(dictMethod.accessSpecifier()) + ' ' +                                    // модификатор доступа
                      
enum2str(dictMethod.returnType()) + ' ' +     // return type
                      
dictClass.staticMethod(i) +                   // method name
                      
'(' ')');

        
treeNode info.rootNode();
        
treeNode treeNode::findNode('\\Classes\\' dictClass.name() + '\\' dictClass.staticMethod(i));

        
file.write('  {');
        
file.write(treeNode.AOTgetSource());
        
file.write('  }');
    }


    
file.write('}');