Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
curio-biblio
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Thiago Anders
curio-biblio
Commits
b53b431a
Commit
b53b431a
authored
Oct 31, 2017
by
Thiago Anders
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Caso de uso CRUD para livro e exemplar finalizado
parent
0a47ab0c
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
112 additions
and
47 deletions
+112
-47
acuRegisterModelMappings.pas
srv/src/lib/acuRegisterModelMappings.pas
+1
-41
ucuCadastrarLivro.pas
srv/src/ucu/ucuCadastrarLivro.pas
+111
-6
No files found.
srv/src/lib/acuRegisterModelMappings.pas
View file @
b53b431a
...
...
@@ -1925,7 +1925,7 @@ begin
Result
:=
'<?xml version="1.0"?>'
+
#
13
#
10
+
'<!--Created with Liquid XML Studio 6.1.18.0 - FREE Community Edition (http://www.liquid-technologies.com)-->'
+
#
13
#
10
+
'<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">'
+
#
13
#
10
+
' <xs:element name="SYSM
A
G">'
+
#
13
#
10
+
' <xs:element name="SYSM
S
G">'
+
#
13
#
10
+
' <xs:complexType>'
+
#
13
#
10
+
' <xs:sequence minOccurs="1" maxOccurs="1">'
+
#
13
#
10
+
' <xs:element name="Livro">'
+
#
13
#
10
+
...
...
@@ -2047,24 +2047,8 @@ begin
' <xs:sequence minOccurs="1" maxOccurs="1">'
+
#
13
#
10
+
' <xs:element name="Livro">'
+
#
13
#
10
+
' <xs:complexType>'
+
#
13
#
10
+
' <xs:sequence minOccurs="1" maxOccurs="1">'
+
#
13
#
10
+
' <xs:element name="Exemplares">'
+
#
13
#
10
+
' <xs:complexType>'
+
#
13
#
10
+
' <xs:sequence minOccurs="0" maxOccurs="unbounded">'
+
#
13
#
10
+
' <xs:element name="Exemplar">'
+
#
13
#
10
+
' <xs:complexType>'
+
#
13
#
10
+
' <xs:attribute name="Codigo" type="xs:string" use="required"/>'
+
#
13
#
10
+
' <xs:anyAttribute processContents="skip"/>'
+
#
13
#
10
+
' </xs:complexType>'
+
#
13
#
10
+
' </xs:element>'
+
#
13
#
10
+
' </xs:sequence>'
+
#
13
#
10
+
' <xs:anyAttribute namespace="" processContents="skip"/>'
+
#
13
#
10
+
' </xs:complexType>'
+
#
13
#
10
+
' </xs:element>'
+
#
13
#
10
+
' </xs:sequence>'
+
#
13
#
10
+
' <xs:attribute name="Titulo" type="xs:string" use="required"/>'
+
#
13
#
10
+
' <xs:attribute name="Autor" type="xs:string" use="required"/>'
+
#
13
#
10
+
' <xs:attribute name="OID" type="xs:string" use="required"/>'
+
#
13
#
10
+
' <xs:attribute name="Edicao" type="xs:string" use="required"/>'
+
#
13
#
10
+
' <xs:anyAttribute processContents="skip"/>'
+
#
13
#
10
+
' </xs:complexType>'
+
#
13
#
10
+
...
...
@@ -2162,29 +2146,6 @@ begin
''
;
end
;
function
GetXSDOut_3227_smucCadastrarLivro_EditandoCadastro_RM_EXCLUIR_EXEMPLAR
:
String
;
begin
Result
:=
'<?xml version="1.0"?>'
+
#
13
#
10
+
'<!--Created with Liquid XML Studio 6.1.18.0 - FREE Community Edition (http://www.liquid-technologies.com)-->'
+
#
13
#
10
+
'<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">'
+
#
13
#
10
+
' <xs:element name="SYSMSG">'
+
#
13
#
10
+
' <xs:complexType>'
+
#
13
#
10
+
' <xs:sequence minOccurs="1" maxOccurs="1">'
+
#
13
#
10
+
' <xs:element name="Exemplar">'
+
#
13
#
10
+
' <xs:complexType>'
+
#
13
#
10
+
' <xs:attribute name="Codigo" type="xs:string" use="required"/>'
+
#
13
#
10
+
' <xs:attribute name="OID" type="xs:int" use="required"/>'
+
#
13
#
10
+
' <xs:anyAttribute processContents="skip"/>'
+
#
13
#
10
+
' </xs:complexType>'
+
#
13
#
10
+
' </xs:element>'
+
#
13
#
10
+
' </xs:sequence>'
+
#
13
#
10
+
' <xs:anyAttribute processContents="skip"/>'
+
#
13
#
10
+
' </xs:complexType>'
+
#
13
#
10
+
' </xs:element>'
+
#
13
#
10
+
'</xs:schema>'
+
#
13
#
10
+
''
;
end
;
procedure
RegisterUseCases1
(
piMetaModel
:
acMetaModel
);
var
lUseCaseTicket
:
acUseCaseTicket
;
...
...
@@ -3244,7 +3205,6 @@ begin
lTransition
.
AddTrigger
(
'RM_EXCLUIR_EXEMPLAR'
);
lTransition
.
AddEffect
(
'Effect_ExcluirExemplar'
);
lTransition
.
XsdIn
.
XML
:=
GetXSDIn_3227_smucCadastrarLivro_EditandoCadastro_RM_EXCLUIR_EXEMPLAR
;
lTransition
.
XsdOut
.
XML
:=
GetXSDOut_3227_smucCadastrarLivro_EditandoCadastro_RM_EXCLUIR_EXEMPLAR
;
end
;
...
...
srv/src/ucu/ucuCadastrarLivro.pas
View file @
b53b431a
...
...
@@ -103,7 +103,7 @@ begin
while
not
lEnumExemplar
.
EOL
do
begin
lFieldExemplar
:=
lFieldExemplares
.
AddField
(
'Exemplar'
);
lExemplar
:=
lEnumExemplar
.
Current
;
lExemplar
:=
lEnumExemplar
.
Current
as
ngExemplar
;
lExemplar
.
toXML
(
lFieldExemplar
);
lEnumExemplar
.
MoveNext
;
...
...
@@ -186,7 +186,7 @@ begin
{Verificamos se ele tiver emprestimos}
lOQL
.
LoadDataSet
(
lFieldResult
);
if
lFieldResult
.
ValueByPath
(
'DATAPACKET.ROWDATA.ROW.@C0'
).
AsInteger
>
0
then
raise
EucException
.
Create
(
'Nao foi possvel excluir o livro, ele possui pelo menos um exemplar com emprstimo associado.'
);
then
raise
EucException
.
Create
(
'Nao foi possvel excluir o livro, ele possui pelo menos um exemplar com empr
e
stimo associado.'
);
{Deletamos o livro e seus exemplares, exemplares so deletado devido a efeito cascata da composio}
lLivro
:=
Self
.
Session
.
LoadObject
(
ngLivro
,
acOIDInt
.
Create
(
lFieldLivro
.
AttributeByName
(
'OID'
).
AsInteger
))
as
ngLivro
;
...
...
@@ -204,8 +204,44 @@ begin
end
;
procedure
ucCadastrarLivro
.
Effect_ConcluirEdicao
(
piRequest
:
utRequest
;
piTransition
:
utTransition
);
var
lFieldLivro
,
lFieldExemplares
,
lFieldExemplar
:
utField
;
lEnumExemplar
:
acEnumerator
;
lExemplares
:
acPersistentObjectList
;
lExemplar
:
ngExemplar
;
lSavePoint
:
acPersistenceSessionSavePoint
;
begin
lSavePoint
:=
Self
.
Session
.
AddSavePoint
;
lFieldLivro
:=
piRequest
.
Message
.
RootField
.
FieldByName
(
'Livro'
);
fLivro
.
Autor
.
Value
:=
lFieldLivro
.
FindAttribute
(
'Autor'
).
AsString
;
fLivro
.
Titulo
.
Value
:=
lFieldLivro
.
FindAttribute
(
'Titulo'
).
AsString
;
fLivro
.
Edicao
.
Value
:=
lFieldLivro
.
FindAttribute
(
'Edicao'
).
AsString
;
Session
.
Save
;
lFieldLivro
:=
piRequest
.
Response
.
RootField
.
AddField
(
'Livro'
);
fLivro
.
toXML
(
lFieldLivro
);
lFieldExemplares
:=
lFieldLivro
.
AddField
(
'Exemplares'
);
lEnumExemplar
:=
fLivro
.
Exemplares
.
GetEnumerator
;
try
while
not
lEnumExemplar
.
EOL
do
begin
lExemplar
:=
lEnumExemplar
.
Current
as
ngExemplar
;;
lFieldExemplar
:=
lFieldExemplares
.
AddField
(
'Exemplar'
);
lExemplar
.
toXML
(
lFieldExemplar
);
lEnumExemplar
.
MoveNext
;
end
;
finally
lEnumExemplar
.
Free
;
end
;
piRequest
.
Processed
:=
True
;
end
;
procedure
ucCadastrarLivro
.
Effect_Cancelar
(
piRequest
:
utRequest
;
piTransition
:
utTransition
);
...
...
@@ -217,15 +253,84 @@ begin
end
;
procedure
ucCadastrarLivro
.
Effect_IncluirExemplar
(
piRequest
:
utRequest
;
piTransition
:
utTransition
);
var
lFieldExemplar
:
utField
;
lExemplar
:
ngExemplar
;
lSavePoint
:
acPersistenceSessionSavePoint
;
lString
:
acString
;
lSituacao
:
ngSituacaoExemplar
;
begin
lFieldExemplar
:=
piRequest
.
Message
.
RootField
.
FieldByName
(
'Exemplar'
);
lSavePoint
:=
Self
.
Session
.
AddSavePoint
;
try
lExemplar
:=
ngExemplar
.
CreateNew
(
Self
.
Session
);
lExemplar
.
Codigo
.
Value
:=
lFieldExemplar
.
FindAttribute
(
'Codigo'
).
AsString
;
lExemplar
.
Livro
.
Partner
:=
fLivro
;
try
lSituacao
:=
Self
.
Session
.
LoadObject
(
ngSituacaoExemplar
,
acOIDInt
.
Create
(
1
))
as
ngSituacaoExemplar
;
except
on
e
:
acObjectNotFoundException
do
raise
EucException
.
Create
(
'Situacao do exemplar no podeser encontrada.'
);
else
raise
EucException
.
Create
(
'No foi possvel atribuir uma situao a esse exemplar.'
);
end
;
lExemplar
.
Situacao
.
Partner
:=
lSituacao
;
lFieldExemplar
:=
piRequest
.
Response
.
RootField
.
AddField
(
'Exemplar'
);
lExemplar
.
toXML
(
lFieldExemplar
);
except
Self
.
Session
.
RollBackToSavePoint
(
lSavePoint
);
raise
;
end
;
piRequest
.
Processed
:=
True
;
end
;
procedure
ucCadastrarLivro
.
Effect_ExcluirExemplar
(
piRequest
:
utRequest
;
piTransition
:
utTransition
);
var
lFieldExemplar
,
lFieldResult
:
utField
;
lExemplar
:
ngExemplar
;
lSavePoint
:
acPersistenceSessionSavePoint
;
lOQL
:
IContarEmprestimosExemplar
;
begin
lSavePoint
:=
Session
.
AddSavePoint
;
lFieldExemplar
:=
piRequest
.
Message
.
RootField
.
FieldByName
(
'Exemplar'
);
lFieldExemplar
:=
piRequest
.
Message
.
RootField
.
FieldByName
(
'Exemplar'
);
try
{Verificamos se est na lista de exemplares do livro}
lExemplar
:=
Session
.
LoadObject
(
ngExemplar
,
acOIDInt
.
Create
(
lFieldExemplar
.
AttributeByName
(
'OID'
).
AsInteger
))
as
ngExemplar
;
if
fLivro
.
Exemplares
.
IndexOf
(
lExemplar
)
=
-
1
then
raise
EucException
.
Create
(
'Exemplar nao esta na lista de exeplares deste livro.'
);
{Preparamos a busca OQL}
lOQL
:=
utEmprestimoOQL
.
ContarEmprestimosExemplar
(
Self
.
Session
);
lOQL
.
Param_oid
.
Value
:=
lFieldExemplar
.
AttributeByName
(
'OID'
).
AsInteger
;
lFieldResult
:=
utField
.
Create
;
try
{Verificamos se ele tiver emprestimos}
lOQL
.
LoadDataSet
(
lFieldResult
);
if
lFieldResult
.
ValueByPath
(
'DATAPACKET.ROWDATA.ROW.@C0'
).
AsInteger
>
0
then
raise
EucException
.
Create
(
'Nao foi possvel excluir o exemplar, ele possui ao menos um emprestimo associado.'
);
{Deletamos o exemplar de livro}
lExemplar
:=
Self
.
Session
.
LoadObject
(
ngExemplar
,
acOIDInt
.
Create
(
lFieldExemplar
.
AttributeByName
(
'OID'
).
AsInteger
))
as
ngExemplar
;
fLivro
.
Exemplares
.
Remove
(
lExemplar
);
finally
lFieldResult
.
Free
;
end
;
except
Self
.
Session
.
RollBackToSavePoint
(
lSavePoint
);
raise
;
end
;
piRequest
.
Processed
:=
True
;
end
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment