User bio
404 bio not found
Member since Sep 27, 2023
Pinned posts:
Posts:
Replies:
Corentin Blondeau · Jul 4, 2025 go to post

Thanks for your responses !!!
I found a way to do it with SQL :

Set sqlQuery = "SELECT * FROM %Dictionary.PropertyDefinition WHERE parent = '"_ className _"' ORDER BY SequenceNumber"Set resultSet = ##class(%SQL.Statement).%New()
    Set status = resultSet.%Prepare(sqlQuery)
    $$$ThrowOnError(status)
    Set tResult = resultSet.%Execute()
    
    While tResult.%Next() {
        Set Name = tResult.%Get("Name")
        ...
        }

Corentin

Corentin Blondeau · Feb 25, 2025 go to post

Thank you
You are right, there are some limitations and edge cases on my code.
To send huge stream, we need to split parts. But in order to do it properly, I think it need lot of works, since each part is re encode into string.
 

Corentin Blondeau · Jan 13, 2025 go to post

 Hello,
I have an other way to do it, it's a (little) bigger.
It doesn't need to indicate the package at the beginning.
The little addition is that this method can return all the classes that are differents without delete them.
 

/// Take as parameters /// ClassList whitch is the list return by ImportDir/// pDeleteIfExist : boolean to know if we have to delete classes/// listClassDiffer : lists of differents classes between the directory from ImportDir and InterSystems/// Return listClassDiffer; if error, return an exceptionClassMethod SynchroClass(ByRef classList As%String, pDeleteIfExist As%Boolean = 0, Output listClassDiffer As%ListOfDataTypes) As%Status
{
	Set status = $$$OK#dim exception As%Exception.AbstractExceptionSet tKey = ""Set listclass = ##class(%ListOfDataTypes).%New()
	Set listClassDiffer = ##class(%ListOfDataTypes).%New()

	Try{
		// insert the differentes classes from classList in a new list with a "while"Do{
			Set tKey=$ORDER(classList(tKey))
			//Write " tkey " ,tKey,!Do listclass.Insert(tKey)
		}While(tKey'="")

		Set SQLquery = "SELECT Name "Set SQLquery = SQLquery _ " FROM %Library.RoutineMgr_StudioOpenDialog('*.cls',1,1,0,1,0,0,,,0) "Set stmt = ##class(%SQL.Statement).%New()
		Set status = stmt.%Prepare(SQLquery)		
		Set rset = stmt.%Execute()
		#dim rset as%SQL.StatementResult/* get the table of result of the SQL request as classes of server and compare them to the classes from listclass
		if classes are different, we add them to the zreturn's parameter and we delete them */While rset.%Next(){
			Set name = rset.%Get("Name")
	
			//Write " name class and index ", name,idx, !If (listclass.Find(name) = ""){
				Write !,name
				Set status = listClassDiffer.Insert(name)
				$$$ThrowOnError(status)

				If (pDeleteIfExist){
					Set status = $SYSTEM.OBJ.Delete(name,"e")
					$$$ThrowOnError(status)
				}				
			}		
		}
	}Catch exception {
		Set status = exception.AsStatus()
	}
	Quit status
}
Certifications & Credly badges:
Corentin has no Certifications & Credly badges yet.
Followers:
Corentin has no followers yet.
Following:
Corentin has not followed anybody yet.