рдмрд░реЛрдмрд░ рдирд╛рд╡реЗ
рдпреЛрдЧреНрдп рдирд╛рд╡реЗ рдХреЛрдб рд╡рд╛рдЪрдиреАрдпрддрд╛ рд╕реБрдзрд╛рд░рддрд╛рдд, рддреНрдпрд╛рдореБрд│реЗ рдХреЛрдбрд╢реА рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рд▓рд╛рдЧрдгрд╛рд░рд╛ рд╡реЗрд│ рдХрдореА рд╣реЛрддреЛ, рдХрд╛рд░рдг рдЬреЗрд╡реНрд╣рд╛ рдПрдЦрд╛рджреНрдпрд╛ рдкрджреНрдзрддреАрдЪреЗ рдирд╛рд╡ рддреНрдпрд╛рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреЗ рдЕрдВрджрд╛рдЬреЗ рд╡рд░реНрдгрди рдХрд░рддреЗ рддреЗрд╡реНрд╣рд╛ рдкрджреНрдзрдд рд╡рд╛рдкрд░рдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЕрд╕рддреЗ. рдХреЛрдбрдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯреАрдордзреНрдпреЗ рдирд╛рд╡реЗ рдЕрд╕рддрд╛рдд (рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕, рдкрджреНрдзрддреА, рд╡рд░реНрдЧ, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рдлрд╛рдЗрд▓реНрд╕ рдЗ.), рддреНрдпрд╛рдореБрд│реЗ рдпреЛрдЧреНрдп, рд╕реНрд╡рдЪреНрдЫ рдХреЛрдб рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛ рд╣рд╛ рдореБрджреНрджрд╛ рдЦреВрдк рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рдард░рддреЛ. рд╡рд░реАрд▓ рдЖрдзрд╛рд░рд╛рд╡рд░, рдирд╛рд╡рд╛рдиреЗ рдЕрд░реНрде рд╡реНрдпрдХреНрдд рдХреЗрд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЖрд╣реЗ, рддреЗ рдХрд╛рдп рдХрд░рддреЗ рдЖрдгрд┐ рддреЗ рдХрд╕реЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ. рдореА рдПрдХрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╡реЗрд│рд╛ рд▓рдХреНрд╖рд╛рдд рдШреЗрдИрди рдХреА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рд╕рд╛рдареА рд╕рд░реНрд╡реЛрддреНрддрдо рдЯрд┐рдкреНрдкрдгреА рдореНрд╣рдгрдЬреЗ рддреНрдпрд╛рд▓рд╛ рдЪрд╛рдВрдЧрд▓реЗ рдирд╛рд╡ рджреЗрдгреЗ.рдЯреАрд╡реНрд╣реА рдорд╛рд▓рд┐рдХрд╛ "рд╢реЗрд░рд▓реЙрдХ" (2010-2017) рдордзреВрди
рдирд╛рдордХрд░рдг рдЗрдВрдЯрд░рдлреЗрд╕
рдЗрдВрдЯрд░рдлреЗрд╕рдордзреНрдпреЗ рд╕рд╣рд╕рд╛ рдХреЕрдкрд┐рдЯрд▓ рдЕрдХреНрд╖рд░рд╛рдиреЗ рд╕реБрд░реВ рд╣реЛрдгрд╛рд░реА рдирд╛рд╡реЗ рдЕрд╕рддрд╛рдд рдЖрдгрд┐ CamelCase рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реА рдЕрд╕рддрд╛рдд. рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд┐рд╣рд┐рддрд╛рдирд╛, рддреНрдпрд╛рд▓рд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдореНрд╣рдгреВрди рдирд┐рдпреБрдХреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "I" рдЙрдкрд╕рд░реНрдЧ рдЬреЛрдбрдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рд╕рд░рд╛рд╡ рдорд╛рдирд▓реЗ рдЬрд╛рдд рдЕрд╕реЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, IUserService), рдкрд░рдВрддреБ рддреЗ рдЦреВрдкрдЪ рдХреБрд░реВрдк рдЖрдгрд┐ рд╡рд┐рдЪрд▓рд┐рдд рдХрд░рдгрд╛рд░реЗ рджрд┐рд╕рддреЗ. рдЕрд╢рд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд, рдЙрдкрд╕рд░реНрдЧ (UserService) рд╡рдЧрд│рдгреЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдирд╛рд╡рд╛рд▓рд╛ (рдЙрджрд╛. UserServiceImpl) рдкреНрд░рддреНрдпрдп рдореНрд╣рдгреВрди "Impl" рдЬреЛрдбрдгреЗ рдЪрд╛рдВрдЧрд▓реЗ. рдХрд┐рдВрд╡рд╛ рд╢рдХреНрдпрддреЛ, рд╢реЗрд╡рдЯрдЪрд╛ рдЙрдкрд╛рдп рдореНрд╣рдгреВрди, рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рдирд╛рд╡рд╛рд╡рд░ "C" рдЙрдкрд╕рд░реНрдЧ рдЬреЛрдбрд╛ (рдЙрджрд╛. CUserService).рд╡рд░реНрдЧрд╛рдВрдЪреА рдирд╛рд╡реЗ
рдЗрдВрдЯрд░рдлреЗрд╕рдкреНрд░рдорд╛рдгреЗрдЪ, рд╡рд░реНрдЧрд╛рдЪреА рдирд╛рд╡реЗ рдХреЕрдкрд┐рдЯрд▓ рдХреЗрд▓реЗрд▓реА рдЖрд╣реЗрдд рдЖрдгрд┐ CamelCase рд╡рд╛рдкрд░рддрд╛рдд. рдЖрдкрдг рдПрдЦрд╛рджреНрдпрд╛ рдЭреЛрдореНрдмреА рд╕рд░реНрд╡рдирд╛рд╢рд╛рдЪрд╛ рд╕рд╛рдордирд╛ рдХрд░рдд рдЕрд╕рд▓реЛ рддрд░реА рдХрд╛рд╣реА рдлрд░рдХ рдкрдбрдд рдирд╛рд╣реА, рд╢реЗрд╡рдЯ рдЬрд╡рд│ рдЖрд▓рд╛ рдЕрд╕рд▓рд╛ рддрд░реА рдХрд╛рд╣реА рдлрд░рдХ рдкрдбрдд рдирд╛рд╣реА тАФ рдХрдзреАрд╣реА, рдХрдзреАрд╣реА, рдХрдзреАрд╣реА рд╡рд░реНрдЧрд╛рдЪреЗ рдирд╛рд╡ рдХреНрд░рд┐рдпрд╛рдкрдж рдЕрд╕реВ рдирдпреЗ! рд╡рд░реНрдЧ рдЖрдгрд┐ рдСрдмреНрдЬреЗрдХреНрдЯрдЪреА рдирд╛рд╡реЗ рд╕рдВрдЬреНрдЮрд╛ рдХрд┐рдВрд╡рд╛ рд╕рдВрдпреБрдЧ рд╕рдВрдЬреНрдЮрд╛ (UserController, UserDetails, UserAccount рдЗ.) рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рддреБрдореНрд╣реА рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧрд╛рдЪреНрдпрд╛ рдирд╛рд╡рд╛рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреЗ рд╕рдВрдХреНрд╖реЗрдк рдЯрд╛рдХреВ рдирдпреЗ, рдХрд╛рд░рдг рддреНрдпрд╛рдореБрд│реЗ рдХреЗрд╡рд│ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЧреБрдВрддрд╛рдЧреБрдВрдд рдирд┐рд░реНрдорд╛рдг рд╣реЛрдИрд▓. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдордЪреНрдпрд╛рдХрдбреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдорд╛рдпрдЧреНрд░реЗрд╢рди рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрд╕рд▓реНрдпрд╛рд╕, рдХреГрдкрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧрд╛рдд "UDM" рдЬреЛрдбреВ рдирдХрд╛, рдореНрд╣рдгрдЬреЗ UDMUserDetails, UDMUserAccount, UDMUserController.рдкрджреНрдзрддреАрдВрдЪреА рдирд╛рд╡реЗ
рд╕рд╣рд╕рд╛, рдкрджреНрдзрддреАрдЪреА рдирд╛рд╡реЗ рд▓рд╣рд╛рди рдЕрдХреНрд╖рд░рд╛рдиреЗ рд╕реБрд░реВ рд╣реЛрддрд╛рдд, рдкрд░рдВрддреБ рддреЗ рдЙрдВрдЯ рдХреЗрд╕ рд╢реИрд▓реА (camelCase) рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░рддрд╛рдд. рд╡рд░, рдЖрдореНрд╣реА рдореНрд╣рдЯрд▓реЗ рдЖрд╣реЗ рдХреА рд╡рд░реНрдЧрд╛рдЪреА рдирд╛рд╡реЗ рдХрдзреАрд╣реА рдХреНрд░рд┐рдпрд╛рдкрдж рдЕрд╕реВ рдирдпреЗрдд. рдпреЗрдереЗ рдкрд░рд┐рд╕реНрдерд┐рддреА рдЕрдЧрджреА рдЙрд▓рдЯ рдЖрд╣реЗ: рдкрджреНрдзрддреАрдВрдЪреА рдирд╛рд╡реЗ рдХреНрд░рд┐рдпрд╛рдкрджреЗ рдХрд┐рдВрд╡рд╛ рдХреНрд░рд┐рдпрд╛рдкрдж рд╡рд╛рдХреНрдпреЗ рдЕрд╕рд╛рд╡реАрдд: findUserById, findAllUsers, createUser рдЗ. рдПрдХ рдкрджреНрдзрдд (рддрд╕реЗрдЪ рдЪрд▓ рдЖрдгрд┐ рд╡рд░реНрдЧ) рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛, рдЧреЛрдВрдзрд│ рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА рд╕реБрд╕рдВрдЧрдд рдирд╛рдордХрд░рдг рдкрджреНрдзрддреА рд╡рд╛рдкрд░рд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА, рдПрдЦрд╛рджреНрдпрд╛ рдкрджреНрдзрддреАрд▓рд╛ getUserById рдХрд┐рдВрд╡рд╛ findUserById рдЕрд╕реЗ рдирд╛рд╡ рджрд┐рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдЖрдгрд┐ рдЖрдгрдЦреА рдПрдХ рдЧреЛрд╖реНрдЯ: рдкрджреНрдзрддреАрдВрдЪреНрдпрд╛ рдирд╛рд╡рд╛рдВрдордзреНрдпреЗ рд╡рд┐рдиреЛрдж рд╡рд╛рдкрд░реВ рдирдХрд╛, рдХрд╛рд░рдг рдЗрддрд░рд╛рдВрдирд╛ рд╡рд┐рдиреЛрдж рд╕рдордЬреВ рд╢рдХрдд рдирд╛рд╣реА. рдкрд░рд┐рдгрд╛рдореА, рдкрджреНрдзрдд рдХрд╛рдп рдХрд░рддреЗ рд╣реЗ рд╕рдордЬрдгреНрдпрд╛рдд рддреЗ рдЕрдпрд╢рд╕реНрд╡реА рд╣реЛрдК рд╢рдХрддрд╛рдд.рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рд╡реЗ
рдмрд░реНтАНрдпрд╛рдЪ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдЪреА рдирд╛рд╡реЗ рд▓реЛрдЕрд░рдХреЗрд╕ рдЕрдХреНрд╖рд░рд╛рдиреЗ рд╕реБрд░реВ рд╣реЛрддрд╛рдд рдЖрдгрд┐ рдХреЕрдорд▓рдХреЗрд╕ рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░рддрд╛рдд, рдЬреЗрд╡реНрд╣рд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдЬрд╛рдЧрддрд┐рдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдЕрд╕рддреЛ. рдЕрд╢рд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд, рдирд╛рд╡рд╛рдЪреА рд╕рд░реНрд╡ рдЕрдХреНрд╖рд░реЗ рдореЛрдареНрдпрд╛ рдЕрдХреНрд╖рд░рд╛рдд рд▓рд┐рд╣рд┐рд▓реА рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рд╢рдмреНрдж рдЕрдВрдбрд░рд╕реНрдХреЛрд░ ("_") рджреНрд╡рд╛рд░реЗ рд╡реЗрдЧрд│реЗ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рд╕реЛрдпреАрд╕рд╛рдареА, рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪреЗ рдирд╛рд╡ рджреЗрддрд╛рдирд╛ рддреБрдореНрд╣реА рдЕрд░реНрдердкреВрд░реНрдг рд╕рдВрджрд░реНрдн рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛. рджреБрд╕рд▒реНрдпрд╛ рд╢рдмреНрджрд╛рдВрдд, рдЬреЗрд╡реНрд╣рд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдореЛрдареНрдпрд╛ рдЧреЛрд╖реНрдЯреАрдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рддреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, firstName, lastName, рдХрд┐рдВрд╡рд╛ status. рдЕрд╢рд╛ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, рддреБрдореНрд╣реА рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдЬреЛрдбреВ рд╢рдХрддрд╛ рдЬреЗ рд╣реЗ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдХреЛрдгрддреНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ рд╣реЗ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде: userFirstName, userLastName, userStatus. рдЬреЗрд╡реНрд╣рд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪрд╛ рдЕрд░реНрде рдкреВрд░реНрдгрдкрдгреЗ рднрд┐рдиреНрди рдЕрд╕реЗрд▓ рддреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рд╕рдорд╛рди рдирд╛рд╡реЗ рдЯрд╛рд│рд▓реА рдкрд╛рд╣рд┐рдЬреЗрдд. рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдирд╛рд╡рд╛рдВрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдгрд╛рд░реЗ рдХрд╛рд╣реА рд╡рд╛рд░рдВрд╡рд╛рд░ рд╕рдореЛрд░ рдпреЗрдгрд╛рд░реЗ рд╡рд┐рд░реБрджреНрдзрд╛рд░реНрдереА рд╢рдмреНрдж рдпреЗрдереЗ рдЖрд╣реЗрдд:- рд╕реБрд░реВ/рд╕рдорд╛рдкреНрдд
- рдкрд╣рд┐рд▓рд╛/рд╢реЗрд╡рдЯрдЪрд╛
- рд▓реЙрдХ/рдЕрдирд▓реЙрдХ
- рдХрд┐рдорд╛рди/рдХрдорд╛рд▓
- рдкреБрдвреАрд▓/рдорд╛рдЧреАрд▓
- рдЬреВрдиреЗ рдирд╡реЗ
- рдЙрдШрдбрд▓реЗрд▓реЗ/рдмрдВрдж
- рджреГрд╢реНрдпрдорд╛рди/рдЕрджреГрд╢реНрдп
- рд╕реНрд░реЛрдд/рд▓рдХреНрд╖реНрдп
- рд╕реНрд░реЛрдд/рдЧрдВрддрд╡реНрдп
- рд╡рд░ рдЦрд╛рд▓реА
рд▓рд╣рд╛рди рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдирд╛рд╡реЗ
рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрд▓реНрдпрд╛рдХрдбреЗ x рдХрд┐рдВрд╡рд╛ n рдХрд┐рдВрд╡рд╛ рдЕрд╕реЗ рдХрд╛рд╣реАрддрд░реА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЕрд╕рддрд╛рдд, рддреЗрд╡реНрд╣рд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХреЛрдб рд▓рд┐рд╣рд┐рдгрд╛рд▒реНрдпрд╛ рд╡реНрдпрдХреНрддреАрдЪрд╛ рд╣реЗрддреВ рд▓рдЧреЗрдЪ рджрд┐рд╕рдд рдирд╛рд╣реА. n рдХрд╛рдп рдХрд░рддреЗ рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдирд╛рд╣реА. рд╣реЗ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА рдЕрдзрд┐рдХ рдХрд╛рд│рдЬреАрдкреВрд░реНрд╡рдХ рдЪрд┐рдВрддрди рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ (рдЖрдгрд┐ рдпрд╛рдЪрд╛ рдЕрд░реНрде рд╡реЗрд│, рд╡реЗрд│, рд╡реЗрд│). рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╕рдордЬрд╛ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдПрдЦрд╛рджреЗ рдлреАрд▓реНрдб рдЖрд╣реЗ рдЬреЗ рдЬрдмрд╛рдмрджрд╛рд░ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдЖрдпрдбреАрдЪреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ. x рдХрд┐рдВрд╡рд╛ рдлрдХреНрдд id рд╕рд╛рд░рдЦреНрдпрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдЪреНрдпрд╛ рдирд╛рд╡рд╛рдРрд╡рдЬреА, рдЖрдореНрд╣реА рдпрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рд▓рд╛ "responsibleUserId" рдЕрд╕реЗ рдирд╛рд╡ рджреЗрдК, рдЬреЗ рд╡рд╛рдЪрдиреАрдпрддрд╛ рдЖрдгрд┐ рдорд╛рд╣рд┐рддреА рд╕рд╛рдордЧреНрд░реА рддреНрд╡рд░рд┐рдд рд╕реБрдзрд╛рд░рддреЗ. рдЕрд╕реЗ рдореНрд╣рдЯрд▓реЗ рдЖрд╣реЗ рдХреА, n рд╕рд╛рд░рдЦреНрдпрд╛ рд▓рд╣рд╛рди рдирд╛рд╡рд╛рдВрдирд╛ рдЫреЛрдЯреНрдпрд╛ рдкрджреНрдзрддреАрдВрдордзреНрдпреЗ рд╕реНрдерд╛рдирд┐рдХ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдореНрд╣рдгреВрди рд╕реНрдерд╛рди рдЕрд╕рддреЗ, рдЬреЗрдереЗ рдпрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЕрд╕рд▓реЗрд▓рд╛ рдХреЛрдбрдЪрд╛ рдмреНрд▓реЙрдХ рдлрдХреНрдд рджреЛрди рдУрд│реАрдВрдЪрд╛ рдЕрд╕рддреЛ рдЖрдгрд┐ рдкрджреНрдзрддреАрдЪреЗ рдирд╛рд╡ рддреЗрдереЗ рдХрд╛рдп рдШрдбрддреЗ рдпрд╛рдЪреЗ рдЕрдЪреВрдХ рд╡рд░реНрдгрди рдХрд░рддреЗ. рдЕрд╕рд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдкрд╛рд╣реВрди, рд╡рд┐рдХрд╕рдХрд╛рд▓рд╛ рд╕рдордЬрддреЗ рдХреА рддреЗ рджреБрдпреНрдпрдо рдорд╣рддреНрддреНрд╡ рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рд▓рд╛ рдЦреВрдк рдорд░реНрдпрд╛рджрд┐рдд рд╡реНрдпрд╛рдкреНрддреА рдЖрд╣реЗ. рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реБрдк, рд╕реНрдХреЛрдкрдЪреЗ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдирд╛рд╡рд╛рдЪреНрдпрд╛ рд▓рд╛рдВрдмреАрд╡рд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрд╡рд▓рдВрдмрди рдЕрд╕рддреЗ: рдирд╛рд╡ рдЬрд┐рддрдХреЗ рдореЛрдареЗ, рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдЕрдзрд┐рдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЖрдгрд┐ рддреНрдпрд╛рдЙрд▓рдЯ. рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгреВрди, рддрд╛рд░рдЦреЗрдиреБрд╕рд╛рд░ рд╢реЗрд╡рдЯрдЪрд╛ рдЬрддрди рдХреЗрд▓реЗрд▓рд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╢реЛрдзрдгреНрдпрд╛рдЪреА рдкрджреНрдзрдд рдпреЗрдереЗ рдЖрд╣реЗ:public User findLastUser() {
return findAllUsers().stream()
.sorted((x, y) -> -x.getCreatedDate().compareTo(y.getCreatedDate()))
.findFirst()
.orElseThrow(() -> new ResourceNotFoundException("No user exists"));
}
рдпреЗрдереЗ рдЖрдкрдг рд╕реНрдЯреНрд░реАрдордЪреА рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рдгреНрдпрд╛рд╕рд╛рдареА x рдЖрдгрд┐ y рд╣реА рд╢реЙрд░реНрдЯ-рдирд╛рд╡рд╛рдЪреА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╡рд╛рдкрд░рддреЛ рдЖрдгрд┐ рдирдВрддрд░ рдЖрдкрдг рддреНрдпрд╛рдмрджреНрджрд▓ рд╡рд┐рд╕рд░реВрди рдЬрд╛рддреЛ.
рдЗрд╖реНрдЯрддрдо рд▓рд╛рдВрдмреА
рдЪрд▓рд╛ рдирд╛рд╡рд╛рдЪреНрдпрд╛ рд▓рд╛рдВрдмреАрдЪреНрдпрд╛ рд╡рд┐рд╖рдпрд╛рд╕рд╣ рдкреБрдвреЗ рдЬрд╛рдКрдпрд╛. рдЗрд╖реНрдЯрддрдо рдирд╛рд╡рд╛рдЪреА рд▓рд╛рдВрдмреА n рдЖрдгрд┐ MaximumNumberOfUsersInTheCurrentGroup рдордзреАрд▓ рдХреБрдареЗрддрд░реА рдЖрд╣реЗ. рджреБрд╕рд▒реНрдпрд╛ рд╢рдмреНрджрд╛рдВрдд, рд▓рд╣рд╛рди рдирд╛рд╡рд╛рдВрдирд╛ рдЕрд░реНрде рдирд╕рд▓реНрдпрд╛рдореБрд│реЗ рддреНрд░рд╛рд╕ рд╣реЛрддреЛ, рддрд░ рдЦреВрдк рд▓рд╛рдВрдм рдЕрд╕рд▓реЗрд▓реА рдирд╛рд╡реЗ рд╡рд╛рдЪрдиреАрдпрддрд╛ рди рдЬреЛрдбрддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд╛рдврд╡рддрд╛рдд рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рддреЗ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдд рдЖрдореНрд╣реА рдЦреВрдк рдЖрд│рд╢реА рдЕрд╕рддреЛ. n рд╕рд╛рд░рдЦреНрдпрд╛ рд▓рд╣рд╛рди рдирд╛рд╡рд╛рдЪреНрдпрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рд╕рд╛рдареА рд╡рд░ рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреЗрд╕рд╢рд┐рд╡рд╛рдп, рддреБрдореНрд╣реА рд╕реБрдорд╛рд░реЗ 8-16 рд╡рд░реНрдгрд╛рдВрдЪреНрдпрд╛ рд▓рд╛рдВрдмреАрд▓рд╛ рдЪрд┐рдХрдЯреВрди рд░рд╛рд╣рд╛рд╡реЗ. рд╣рд╛ рдПрдХ рдХрдареЛрд░ рдирд┐рдпрдо рдирд╛рд╣реА, рдлрдХреНрдд рдПрдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рддрддреНрддреНрд╡ рдЖрд╣реЗ.рд▓рд╣рд╛рди рдлрд░рдХ
рдирд╛рд╡рд╛рдВрдордзреАрд▓ рд╕реВрдХреНрд╖реНрдо рдлрд░рдХ рдирдореВрдж рдХрд░рдгреНрдпрд╛рдд рдореА рдЕрдпрд╢рд╕реНрд╡реА рд╣реЛрдК рд╢рдХрдд рдирд╛рд╣реА. рд╣реА рджреЗрдЦреАрд▓ рдПрдХ рд╡рд╛рдИрдЯ рдкреНрд░рдерд╛ рдЖрд╣реЗ, рдХрд╛рд░рдг рд╣реЗ рдлрд░рдХ рдлрдХреНрдд рдЧреЛрдВрдзрд│рд╛рдд рдЯрд╛рдХрдгрд╛рд░реЗ рдЕрд╕реВ рд╢рдХрддрд╛рдд рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рдВрдирд╛ рд▓рдХреНрд╖рд╛рдд рдпреЗрдгреНрдпрд╛рд╕рд╛рдареА рдЦреВрдк рдЬрд╛рд╕реНрдд рд╡реЗрд│ рдШрд╛рд▓рд╡рд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, InvalidDataAccessApiUsageException рдЖрдгрд┐ InvalidDataAccessResourceUsageException рдордзреАрд▓ рдлрд░рдХ рдПрдХрд╛ рджреГрд╖реНрдЯреАрдХреНрд╖реЗрдкрд╛рдд рд╢реЛрдзрдгреЗ рдХрдареАрдг рдЖрд╣реЗ. рд▓реЛрдЕрд░рдХреЗрд╕ L рдЖрдгрд┐ O рд╡рд╛рдкрд░рддрд╛рдирд╛ рдЕрдиреЗрдХрджрд╛ рдЧреЛрдВрдзрд│ рджреЗрдЦреАрд▓ рд╣реЛрдК рд╢рдХрддреЛ, рдХрд╛рд░рдг рддреЗ 1 рдЖрдгрд┐ 0 рд╕рд╛рдареА рд╕рд╣рдЬ рдЪреБрдХрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рдХрд╛рд╣реА рдлреЙрдиреНрдЯрдордзреНрдпреЗ рдлрд░рдХ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ, рдХрд╛рд╣реАрдВрдордзреНрдпреЗ рддреЛ рдХрдореА рдЖрд╣реЗ.рдЕрд░реНрде
рдЖрдореНрд╣рд╛рд▓рд╛ рдирд╛рд╡реЗ рдЕрд░реНрдердкреВрд░реНрдг рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╕рдорд╛рдирд╛рд░реНрдереА рд╢рдмреНрджрд╛рдВрджреНрд╡рд╛рд░реЗ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реВ рдирдпреЗ, рдХрд╛рд░рдг, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, UserData рдЖрдгрд┐ UserInfo рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рд╕рдорд╛рди рдЕрд░реНрде рдЖрд╣реЗрдд. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХреЛрдгрддреНрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╕реНрддреВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХреЛрдбрдордзреНрдпреЗ рдЦреЛрд▓рд╡рд░ рдЬрд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓. рдЙрдкрдпреБрдХреНрдд рдорд╛рд╣рд┐рддреА рди рджреЗрдгрд╛рд░реЗ рд╢рдмреНрдж рдЯрд╛рд│рд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, firstNameString рдордзреНрдпреЗ, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ String рдпрд╛ рд╢рдмреНрджрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЖрд╣реЗ? рд╣реЗ рдЦрд░реЛрдЦрд░ рдПрдХ рддрд╛рд░реАрдЦ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрд╕реВ рд╢рдХрддреЗ? рдирдХреНрдХреАрдЪ рдирд╛рд╣реА. рддрд░, рдЖрдореНрд╣реА рдлрдХреНрдд firstName рд╡рд╛рдкрд░рддреЛ. рдорд▓рд╛ рдмреБрд▓рд┐рдпрди рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪрд╛ рджреЗрдЦреАрд▓ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рд╛рдпрдЪрд╛ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгреВрди, flagDeleted рдирд╛рд╡рд╛рдЪреЗ рдмреБрд▓рд┐рдпрди рдШреНрдпрд╛. рдзреНрд╡рдЬ рдпрд╛ рд╢рдмреНрджрд╛рд▓рд╛ рдХрд╛рд╣реА рдЕрд░реНрде рдирд╛рд╣реА. рддреНрдпрд╛рд▓рд╛ isDeleted рдореНрд╣рдгрдгреЗ рдЕрдзрд┐рдХ рд╡рд╛рдЬрд╡реА рдЖрд╣реЗ.рдбрд┐рд╕рдЗрдиреНрдлреЙрд░реНрдореЗрд╢рди
рдореА рдЪреБрдХреАрдЪреНрдпрд╛ рдирд╛рдордХрд░рдг рдкрджреНрдзрддреАрдВрдмрджреНрджрд▓ рдХрд╛рд╣реА рд╢рдмреНрдж рд╕рд╛рдВрдЧреВ рдЗрдЪреНрдЫрд┐рддреЛ. рд╕рдордЬрд╛ рдЖрдордЪреНрдпрд╛рдХрдбреЗ userActivityList рдирд╛рд╡рд╛рдЪреЗ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдЖрд╣реЗ, рдкрдг рд▓рд┐рд╕реНрдЯ рд╣реЛрдгреНрдпрд╛рдРрд╡рдЬреА, рд╣рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛рд╣реА рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░ рдкреНрд░рдХрд╛рд░ рдХрд┐рдВрд╡рд╛ рдХрд╕реНрдЯрдо рд╕реНрдЯреЛрд░реЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрд╣реЗ. рд╣реЗ рд╕рд░рд╛рд╕рд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд▓рд╛ рдЧреЛрдВрдзрд│рд╛рдд рдЯрд╛рдХреВ рд╢рдХрддреЗ: рддреНрдпрд╛рд▓рд╛ userActivityGroup рдХрд┐рдВрд╡рд╛ userActivities рдЕрд╕реЗ рдХрд╛рд╣реАрддрд░реА рдореНрд╣рдгрдгреЗ рдЪрд╛рдВрдЧрд▓реЗ.рд╢реЛрдзрд╛
рд▓рд╣рд╛рди рдЖрдгрд┐ рд╕рд╛рдзреНрдпрд╛ рдирд╛рд╡рд╛рдВрдЪрд╛ рдПрдХ рджреЛрд╖ рдореНрд╣рдгрдЬреЗ рддреЗ рдХреЛрдбрдЪреНрдпрд╛ рдореЛрдареНрдпрд╛ рднрд╛рдЧрд╛рдордзреНрдпреЗ рд╢реЛрдзрдгреЗ рдХрдареАрдг рдЖрд╣реЗ тАФ рдХреЛрдгрддреЗ рд╢реЛрдзрдгреЗ рд╕реЛрдкреЗ рд╣реЛрдИрд▓: "рдирд╛рд╡" рдХрд┐рдВрд╡рд╛ "NAME_FOR_DEFAULT_USER"? рджреБрд╕рд░рд╛ рдкрд░реНрдпрд╛рдп, рдЕрд░реНрдерд╛рддрдЪ. рдирд╛рд╡рд╛рдВрдордзреНрдпреЗ рд╡рд╛рд░рдВрд╡рд╛рд░ рдпреЗрдгрд╛рд░реЗ рд╢рдмреНрдж (рдЕрдХреНрд╖рд░реЗ) рдЖрдкрдг рдЯрд╛рд│рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ, рдХрд╛рд░рдг рддреЗ рд╢реЛрдз рджрд░рдореНрдпрд╛рди рдХреЗрд╡рд│ рдЬреБрд│рдгрд╛рд░реНтАНрдпрд╛ рдлрд╛рдпрд▓реАрдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рдврд╡рддреАрд▓, рдЬреЗ рдЪрд╛рдВрдЧрд▓реЗ рдирд╛рд╣реА. рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдард╡рдг рдХрд░реВрди рджреЗрдК рдЗрдЪреНрдЫрд┐рддреЛ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛрдб рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рд╡рд╛рдЪрдгреНрдпрд╛рдд рдЬрд╛рд╕реНрдд рд╡реЗрд│ рдШрд╛рд▓рд╡рддрд╛рдд, рдореНрд╣рдгреВрди рддреБрдордЪреНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреНрдпрд╛ рдШрдЯрдХрд╛рдВрдирд╛ рдирд╛рд╡ рджреЗрдгреНрдпрд╛рдмрд╛рдмрдд рд╣реБрд╢рд╛рд░ рд╡реНрд╣рд╛. рдкрдг рдПрдЦрд╛рджрдВ рдЪрд╛рдВрдЧрд▓рдВ рдирд╛рд╡ рд╕рд╛рдкрдбрд▓рдВ рдирд╛рд╣реА рддрд░? рдЬрд░ рдПрдЦрд╛рджреНрдпрд╛ рдкрджреНрдзрддреАрдЪреЗ рдирд╛рд╡ рддреНрдпрд╛рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреЗ рдЪрд╛рдВрдЧрд▓реЗ рд╡рд░реНрдгрди рдХрд░рдд рдирд╕реЗрд▓ рддрд░? рдпреЗрдереЗ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рд╕реНрдЯреЗрдЬрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛рдд.рдЯрд┐рдкреНрдкрдгреНрдпрд╛
рд╕рдорд░реНрдкрдХ рдЯрд┐рдкреНрдкрдгреАрдкреЗрдХреНрд╖рд╛ рдХрд╛рд╣реАрд╣реА рдЪрд╛рдВрдЧрд▓реЗ рдирд╛рд╣реА, рдкрд░рдВрддреБ рд╢реВрдиреНрдп, рдХрд╛рд▓рдмрд╛рд╣реНрдп рдХрд┐рдВрд╡рд╛ рдЦреЛрдЯреНрдпрд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрд╕рд╛рд░рдЦреНрдпрд╛ рдореЙрдбреНрдпреВрд▓рдордзреНрдпреЗ рдХрд╛рд╣реАрд╣реА рдЧреЛрдВрдзрд│ рдШрд╛рд▓рдд рдирд╛рд╣реА. рддреЗ рджреБрдзрд╛рд░реА рддрд▓рд╡рд╛рд░ рдЕрд╕реВ рд╢рдХрддрд╛рдд, рдирд╛рд╣реА рдХрд╛? рддрд░реАрд╣реА, рддреБрдореНрд╣реА рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдирд╛ рдирд┐рдГрд╕рдВрджрд┐рдЧреНрдзрдкрдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдорд╛рдиреВ рдирдпреЗ, рддрд░ рддреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдХрдореА рд╡рд╛рдИрдЯ рд╕рдордЬреВ рдирдпреЗ. рд╢реЗрд╡рдЯреА, рдЯрд┐рдкреНрдкрдгреА рд╣рд╛ рдореВрд▓рдд: рдХреЛрдбрдордзреНрдпреЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдпреЗрдд рдирд╕рд▓реЗрд▓реНрдпрд╛ рд╡рд┐рдЪрд╛рд░рд╛рдВрдЪреА рднрд░рдкрд╛рдИ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдПрдХ рдорд╛рд░реНрдЧ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬрд░ рдкрджреНрдзрдд рд╕реНрд╡рддрдГрдЪ рдЦреВрдк рдЧреЛрдВрдзрд│рд╛рдд рдЯрд╛рдХрдгрд╛рд░реА рдард░рд▓реА рддрд░ рдЖрдореНрд╣реА рддреЗ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкреНрд░рдХрд╛рд░реЗ рдПрдЦрд╛рджреНрдпрд╛ рдкрджреНрдзрддреАрдЪреЗ рд╕рд╛рд░ рд╕рд╛рдВрдЧрдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рддреЛ. рдпрд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд, рд╡рд░реНрдгрдирд╛рддреНрдордХ рдиреЛрдЯреНрд╕ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдХреЛрдб рдпреЛрдЧреНрдп рд░рд┐рдлреЕрдХреНрдЯрд░ рдХрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ. рдЯрд┐рдкреНрдкрдгреА рдЬрд┐рддрдХреА рдЬреБрдиреА рддрд┐рддрдХреА рдЯрд┐рдкреНрдкрдгреА рд╡рд╛рдИрдЯ, рдХрд╛рд░рдг рдХреЛрдб рд╡рд╛рдврддреЛ рдЖрдгрд┐ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреЛ, рдкрд░рдВрддреБ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рддрд╢рд╛рдЪ рд░рд╛рд╣реВ рд╢рдХрддрд╛рдд. рдЯрд┐рдкреНрдкрдгреА рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рдкрд╛рд╕реВрди рдЬрд┐рддрдХрд╛ рдЬрд╛рд╕реНрдд рд╡реЗрд│ рдирд┐рдШреВрди рдЧреЗрд▓рд╛ рдЖрд╣реЗ, рддрд┐рддрдХрд╛ рдЕрдзрд┐рдХ рд╢рдВрдХрд╛рд╕реНрдкрдж рдЕрд╕реВ рд╢рдХрддреЛ. рдЪреБрдХреАрдЪреНрдпрд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдЕрдЬрд┐рдмрд╛рдд рдиреЛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдкреЗрдХреНрд╖рд╛ рдЦреВрдкрдЪ рд╡рд╛рдИрдЯ рдЕрд╕рддрд╛рдд, рдХрд╛рд░рдг рддреНрдпрд╛ рдЧреЛрдВрдзрд│рд╛рдд рдЯрд╛рдХрдгрд╛рд▒реНрдпрд╛ рдЖрдгрд┐ рдлрд╕рд╡реНрдпрд╛ рдЕрд╕рддрд╛рдд, рдЦреЛрдЯреНрдпрд╛ рдЕрдкреЗрдХреНрд╖рд╛ рджреЗрддрд╛рдд. рдЖрдгрд┐ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЦреВрдк рдЕрд╡рдШрдб рдХреЛрдб рдЕрд╕рд▓реЗ рддрд░реА рддреНрдпрд╛рд╡рд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЖрдореНрд╣реА рддреЗ рдкреБрдиреНрд╣рд╛ рд▓рд┐рд╣рд╛рд╡реЗ.рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдЪреЗ рдкреНрд░рдХрд╛рд░
-
рдХрд╛рдпрджреЗрд╢реАрд░ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ тАФ рдХрд╛рдпрджреЗрд╢реАрд░ рдХрд╛рд░рдгрд╛рдВрд╕рд╛рдареА рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддреНрд░реЛрдд рдлрд╛рдЗрд▓рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:
* Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-
рдорд╛рд╣рд┐рддреАрдкреВрд░реНрдг рдЯрд┐рдкреНрдкрдгреНрдпрд╛ тАФ рдХреЛрдбрдЪреНрдпрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрд╛рдЪреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдгрд╛рд▒реНрдпрд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ (рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рд╣рд┐рддреА рдкреНрд░рджрд╛рди рдХрд░рдгреЗ рдХрд┐рдВрд╡рд╛ рдХреЛрдбрдЪреНрдпрд╛ рджрд┐рд▓реЗрд▓реНрдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рдЪреНрдпрд╛ рд╣реЗрддреВрд╡рд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджреЗрдгреЗ).
рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:
/* * Combines the user from the database with the one passed for updating * When a field in requestUser is empty, it is filled with old data from foundUser */ private User mergeUser(User requestUser, User foundUser) { return new User( foundUser.getId(), requestUser.getFirstName() == null ? requestUser.getFirstName() : foundUser.getFirstName(), requestUser.getMiddleName() == null ? requestUser.getMiddleName() : foundUser.getMiddleName(), requestUser.getLastName() == null ? requestUser.getLastName() : foundUser.getLastName(), requestUser.getAge() == null ? requestUser.getAge() : foundUser.getAge() ); }
рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЖрдкрдг рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрд╢рд┐рд╡рд╛рдп рдХрд░реВ рд╢рдХрддрд╛, рдХрд╛рд░рдг рдкрджреНрдзрддреАрдЪреЗ рдирд╛рд╡ рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕, рдЕрддрд┐рд╢рдп рдкрд╛рд░рджрд░реНрд╢рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрд╕рд╣, рд╕реНрд╡рддрдГрдЪреЗ рдЪрд╛рдВрдЧрд▓реЗ рд╡рд░реНрдгрди рдХрд░рддрд╛рдд.
-
рдЪреЗрддрд╛рд╡рдгреА рдЯрд┐рдкреНрдкрдгреНрдпрд╛ тАФ рдПрдЦрд╛рджреНрдпрд╛ рдХреГрддреАрдЪреНрдпрд╛ рдЕрдирд┐рд╖реНрдЯ рдкрд░рд┐рдгрд╛рдорд╛рдВрдмрджреНрджрд▓ рдЗрддрд░ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рдЪреЗрддрд╛рд╡рдгреА рджреЗрдгреНрдпрд╛рдЪреНрдпрд╛ рдЙрджреНрджреЗрд╢рд╛рдиреЗ рдЯрд┐рдкреНрдкрдгреА (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЪрд╛рдЪрдгреА @Ignore рдореНрд╣рдгреВрди рдХрд╛ рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдХреЗрд▓реА рдЧреЗрд▓реА рдпрд╛рдмрджреНрджрд▓ рддреНрдпрд╛рдВрдирд╛ рдЪреЗрддрд╛рд╡рдгреА):
// Takes too long to run // Don't run if you don't have a lot of time @Ignore @Test public void someIntegrationTest() { тАжтАж }
-
TODO - рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдЬреНрдпрд╛ рднрд╡рд┐рд╖реНрдпрд╛рдд рдХрд░рд╛рд╡реНрдпрд╛ рд▓рд╛рдЧрдгрд╛рд▒реНрдпрд╛ рдПрдЦрд╛рджреНрдпрд╛ рдЧреЛрд╖реНрдЯреАрдмрджреНрджрд▓рдЪреА рдиреЛрдВрдж рдЖрд╣реЗ рдЬреА рдХрд╛рд╣реА рдХрд╛рд░рдгрд╛рд╕реНрддрд╡ рдЖрддрд╛ рдХрд░рддрд╛ рдпреЗрдд рдирд╛рд╣реА. рд╣реА рдПрдХ рдЪрд╛рдВрдЧрд▓реА рд╕рд░рд╛рд╡ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдЧреЛрдВрдзрд│ рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА рдЕрд╢рд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдЪреЗ рдирд┐рдпрдорд┐рддрдкрдгреЗ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ.
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЕрд╕реЗрд▓:
// TODO: Add a check for the current user ID (when the security context is created) @Override public Resource downloadFile(File file) { return fileManager.download(file); }
рдпреЗрдереЗ рдЖрдореНрд╣реА рд╣реЗ рддрдереНрдп рд▓рдХреНрд╖рд╛рдд рдШреЗрддреЛ рдХреА рдЖрдореНрд╣рд╛рд▓рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдСрдкрд░реЗрд╢рди рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреА рддреБрд▓рдирд╛ (рдЬреНрдпрд╛рдЪрд╛ рдЖрдпрдбреА рдЖрдореНрд╣реА рд╕реБрд░рдХреНрд╖рд┐рддрддрд╛ рд╕рдВрджрд░реНрднрд╛рддреВрди рдХрд╛рдвреВ) рдЬреНрдпрд╛рдиреЗ рд╕реЗрд╡реНрд╣ рдСрдкрд░реЗрд╢рди рдХреЗрд▓реЗ рддреНрдпрд╛рдЪреНрдпрд╛рд╢реА рдЬреЛрдбрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
-
рдордЬрдмреБрддреАрдХрд░рдг рдЯрд┐рдкреНрдкрдгреНрдпрд╛ тАФ рдкрд╣рд┐рд▓реНрдпрд╛ рджреГрд╖реНрдЯреАрдХреНрд╖реЗрдкрд╛рдд рдХреНрд╖реБрд▓реНрд▓рдХ рд╡рд╛рдЯреВ рд╢рдХрддреАрд▓ рдЕрд╢рд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдЪреНрдпрд╛ рдорд╣рддреНрддреНрд╡рд╛рд╡рд░ рдЬреЛрд░ рджреЗрдгрд╛рд▒реНрдпрд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛.
рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгреВрди, рдХрд╛рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕рд╕рд╣ рдЪрд╛рдЪрдгреА рдбреЗрдЯрд╛рдмреЗрд╕ рднрд░рдгрд╛рд▒реНрдпрд╛ рдкрджреНрдзрддреАрдЪрд╛ рдПрдХ рднрд╛рдЧ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреНрдпрд╛:
Stream.of(IOUtils.resourceToString("/fill-scripts/" + x, StandardCharsets.UTF_8) .trim() .split(";")) .forEach(jdbcTemplate::update); // The trim() call is very important. It removes possible spaces at the end of the script // so that when we read and split into separate requests, we don't end up with empty ones
-
Javadoc рдЯрд┐рдкреНрдкрдгреНрдпрд╛ тАФ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрд╕рд╛рдареА API рдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгрд╛рд▒реНрдпрд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛. рдХрджрд╛рдЪрд┐рдд рд╕рд░реНрд╡рд╛рдд рдЙрдкрдпреБрдХреНрдд рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдЖрд╣реЗрдд, рдХрд╛рд░рдг рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг API рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ. рддреЗ рдореНрд╣рдгрд╛рд▓реЗ, рддреЗ рдЗрддрд░ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЯрд┐рдкреНрдкрдгреАрдкреНрд░рдорд╛рдгреЗ рдЬреБрдиреЗ рджреЗрдЦреАрд▓ рдЕрд╕реВ рд╢рдХрддрд╛рдд. рдореНрд╣рдгреВрди, рд╣реЗ рдХрдзреАрд╣реА рд╡рд┐рд╕рд░реВ рдирдХрд╛ рдХреА рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдгрд╛рддреАрд▓ рдореБрдЦреНрдп рдпреЛрдЧрджрд╛рди рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрджреНрд╡рд╛рд░реЗ рдирд╛рд╣реА рддрд░ рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рдХреЛрдбрджреНрд╡рд╛рд░реЗ рдХреЗрд▓реЗ рдЬрд╛рддреЗ.
рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдмрд░реНтАНрдпрд╛рдкреИрдХреА рд╕рд╛рдорд╛рдиреНрдп рдкрджреНрдзрддреАрдЪреЗ рдпреЗрдереЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЖрд╣реЗ:
/** * Updates the passed fields for a user based on its id. * * @param id id of the user to be updated * @param user user with populated fields for updating * @return updated user */ User update(Long id, User user);
рд╡рд╛рдИрдЯ рдЯрд┐рдкреНрдкрдгреНрдпрд╛
-
рдЧреБрд│рдЧреБрд│реАрдд рдЯрд┐рдкреНрдкрдгреА тАФ рдЬреНрдпрд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдШрд╛рдИрдд рд▓рд┐рд╣рд┐рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рдЬреНрдпрд╛рдЪрд╛ рдЕрд░реНрде рдХреЗрд╡рд│ рддреНрдпрд╛ рд▓рд┐рд╣рд┐рдгрд╛рд▒реНрдпрд╛ рд╡рд┐рдХрд╕рдХрд╛рд▓рд╛рдЪ рд╕рдордЬрддреЛ, рдХрд╛рд░рдг рдЯрд┐рдкреНрдкрдгреА рдЬреНрдпрд╛рдЪрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ рддреА рд╕реВрдХреНрд╖реНрдо рдкрд░рд┐рд╕реНрдерд┐рддреА рдХреЗрд╡рд│ рддреНрдпрд╛рд▓рд╛рдЪ рдХрд│рддреЗ.
рдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рд╛:
public void configureSomeSystem() { try{ String configPath = filesLocation.concat("/").concat(CONFIGURATION_FILE); FileInputStream stream = new FileInputStream(configPath); } catch (FileNotFoundException e) { // If there is no configuration file, the default configuration is loaded } }
рдпрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдХреЛрдг рд▓реЛрдб рдХрд░рддрд╛рдд? рддреЗ рдЖрдзреАрдЪ рд▓реЛрдб рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд? рдпрд╛ рдкрджреНрдзрддреАрдиреЗ рдЕрдкрд╡рд╛рдж рдкрдХрдбрдгреЗ рдЖрдгрд┐ рдбреАрдлреЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рд▓реЛрдб рдХрд░рдгреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрд╣реЗ рдХрд╛? рдмрд░реЗрдЪ рдкреНрд░рд╢реНрди рдЙрджреНрднрд╡рддрд╛рдд рдЬреНрдпрд╛рдВрдЪреА рдЙрддреНрддрд░реЗ рдХреЗрд╡рд│ рд╕рд┐рд╕реНрдЯрдордЪреНрдпрд╛ рдЗрддрд░ рднрд╛рдЧрд╛рдВрдЪреНрдпрд╛ рддрдкрд╛рд╕рдгреАрджреНрд╡рд╛рд░реЗ рджрд┐рд▓реА рдЬрд╛рдК рд╢рдХрддрд╛рдд.
- рд░рд┐рдбрдВрдбрдВрдЯ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ - рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдЬреНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╢рдмреНрджрд╛рд░реНрдерд╛рдЪрд╛ рднрд╛рд░ рдШреЗрдд рдирд╛рд╣реАрдд, рдХрд╛рд░рдг рдХреЛрдбрдЪреНрдпрд╛ рджрд┐рд▓реЗрд▓реНрдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рдд рдХрд╛рдп рдШрдбрдд рдЖрд╣реЗ рддреЗ рд╡рд┐рдкреБрд▓рдкрдгреЗ рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ. рджреБрд╕рд▒реНрдпрд╛ рд╢рдмреНрджрд╛рдВрдд, рдЯрд┐рдкреНрдкрдгреА рд╡рд╛рдЪрдгреЗ рдХреЛрдбрдкреЗрдХреНрд╖рд╛ рд╕реЛрдкреЗ рдирд╛рд╣реА.
рдЪрд▓рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛рд╣реВ:
public class JdbcConnection{ public class JdbcConnection{ /** * The logger associated with the current class */ private Logger log = Logger.getLogger(JdbcConnection.class.getName()); /** * Creates and returns a connection using the input parameters */ public static Connection buildConnection(String url, String login, String password, String driver) throws Exception { Class.forName(driver); connection = DriverManager.getConnection(url, login, password); log.info("Created connection with db"); return connection; }
рдЕрд╢рд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдЪрд╛ рдЕрд░реНрде рдХрд╛рдп рдЖрд╣реЗ? рддреЗ рдЬреЗ рдХрд╛рд╣реА рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛рдд рддреЗ рдЖрдзреАрдЪ рдкреВрд░реНрдгрдкрдгреЗ рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ.
-
рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЯрд┐рдкреНрдкрдгреНрдпрд╛ - рдЦреЛрдЯреНрдпрд╛ рдЖрдгрд┐ рдХреЗрд╡рд│ рджрд┐рд╢рд╛рднреВрд▓ рдХрд░рдгрд╛рд▒реНрдпрд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ (рдЕрд╕рддреНрдп). рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдпреЗрдереЗ рдПрдХ рдЖрд╣реЗ.
/** * Helper method. Closes the connection with the scanner if isNotUsing is true */ private void scanClose(Scanner scan, boolean isNotUsing) throws Exception { if (!isNotUsing) { throw new Exception("The scanner is still in use"); } scan.close(); }
рдпрд╛ рдЯрд┐рдкреНрдкрдгреАрдд рдХрд╛рдп рдЪреВрдХ рдЖрд╣реЗ? рд╣реЗ рдЖрдордЪреНрдпрд╛рд╕рд╛рдареА рдереЛрдбреЗ рдЦреЛрдЯреЗ рдЖрд╣реЗ, рдХреА рдЬрд░ isNotUsing рдЦреЛрдЯреЗ рдЕрд╕реЗрд▓ рддрд░ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рдЙрд▓рдЯ рдирд╛рд╣реА, рдЬрд╕реЗ рдХреА рдЯрд┐рдкреНрдкрдгреА рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ.
-
рдЕрдирд┐рд╡рд╛рд░реНрдп рдЯрд┐рдкреНрдкрдгреНрдпрд╛ тАФ рдЬреНрдпрд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рдорд╛рдирд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд (рдЙрджрд╛. Javadoc рдЯрд┐рдкреНрдкрдгреНрдпрд╛), рдкрд░рдВрддреБ рддреНрдпрд╛ рдХрд╛рд╣реАрд╡реЗрд│рд╛ рдЬрд╛рд╕реНрдд рдкреНрд░рдорд╛рдгрд╛рдд рдЬрдорд╛ рд╣реЛрддрд╛рдд рдЖрдгрд┐ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЖрдгрд┐ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЕрд╕рддрд╛рдд (рдпрд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд рдХрд╛ рдпрд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ).
рдЙрджрд╛рд╣рд░рдг:
/**
* Create a user based on the parameters
* @param firstName first name of the created user
* @param middleName middle name of the created user
* @param lastName last name of the created user
* @param age age of the created user
* @param address address of the created user
* @return user that was created
*/
User createNewUser(String firstName, String middleName, String lastName, String age, String address);
рдпрд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрд╢рд┐рд╡рд╛рдп рдкрджреНрдзрдд рдХрд╛рдп рдХрд░рддреЗ рд╣реЗ рддреБрдореНрд╣реА рд╕рдордЬреВ рд╢рдХрд╛рд▓ рдХрд╛? рдмрд╣реБрдзрд╛, рд╣реЛрдп, рдореНрд╣рдгреВрди рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдпреЗрдереЗ рдирд┐рд░рд░реНрдердХ рдард░рддрд╛рдд.
рд▓реЙрдЧ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ тАФ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдЬреНрдпрд╛ рдХрд╛рд╣реА рд╡реЗрд│рд╛ рдореЙрдбреНрдпреВрд▓рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рддреЗ рд╕рдВрдкрд╛рджрд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рддреЗрд╡реНрд╣рд╛ рдЬреЛрдбрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд (рдмрджрд▓ рд▓реЙрдЧ рд╕рд╛рд░рдЦреЗ рдХрд╛рд╣реАрддрд░реА).
/**
* Records kept since January 9, 2020;
**********************************************************************
* 9 Jan 2020: Providing a database connection using JDBC Connection;
* 15 Jan 2020: Adding DAO-level interfaces for working with the database;
* 23 Jan 2020: Adding integration tests for the database;
* 28 Jan 2020: Implementation of DAO-level interfaces;
* 1 Feb 2020: Development of interfaces for services,
* in accordance with the requirements specified in user stories;
* 16 Feb 2020: Implementation of service interfaces
* (implementation of business logic related to the work of the database);
* 25 Feb 2020: Adding tests for services;
* 8 Mar 2020: Celebration of International Women's Day (Terry is drunk again);
* 21 Mar 2020: Refactoring the service layer;
*/
рд╣рд╛ рджреГрд╖реНрдЯреАрдХреЛрди рдПрдХрджрд╛ рдиреНрдпрд╛рдпреНрдп рд╣реЛрддрд╛, рдкрд░рдВрддреБ рдЖрд╡реГрддреНрддреА рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Git) рдЪреНрдпрд╛ рдЖрдЧрдордирд╛рдиреЗ, рддреЛ рдХреЛрдбрдЪрд╛ рдПрдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЧреЛрдВрдзрд│ рдЖрдгрд┐ рдЧреБрдВрддрд╛рдЧреБрдВрдд рдмрдирд▓рд╛.
рд▓реЗрдЦрдХрддреНрд╡ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ тАФ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдЬреНрдпрд╛рдВрдЪрд╛ рдЙрджреНрджреЗрд╢ рдХреЛрдб рд▓рд┐рд╣рд┐рд▓реЗрд▓реНрдпрд╛ рд╡реНрдпрдХреНрддреАрд▓рд╛ рд╕реВрдЪрд┐рдд рдХрд░рдгреЗ рдЖрд╣реЗ, рдЬреЗрдгреЗрдХрд░реВрди рддреБрдореНрд╣реА рддреНрдпрд╛рдЪреНрдпрд╛рд╢реА/рддрд┐рдЪреНрдпрд╛рд╢реА рд╕рдВрдкрд░реНрдХ рд╕рд╛рдзреВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдХрд╕реЗ, рдХрд╛рдп рдЖрдгрд┐ рдХрд╛ рдЪрд░реНрдЪрд╛ рдХрд░реВ рд╢рдХрддрд╛, рдЙрджрд╛:
* @author Bender Bending
рдкреБрдиреНрд╣рд╛ рдПрдХрджрд╛, рдЖрд╡реГрддреНрддреА рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рддреЗ рдХреА рдХреЛрдбрдЪрд╛ рдХреЛрдгрддрд╛рд╣реА рдмрд┐рдЯ рдХреЛрдгреА рдЖрдгрд┐ рдХрдзреА рдЬреЛрдбрд▓рд╛, рдореНрд╣рдгреВрди рд╣рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрди рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
рдХреЙрдореЗрдВрдЯ-рдЖрдЙрдЯ рдХреЛрдб тАФ рдПрдХ рдХрд┐рдВрд╡рд╛ рджреБрд╕рд░реНтАНрдпрд╛ рдХрд╛рд░рдгрд╛рд╕реНрддрд╡ рдЯрд┐рдкреНрдкрдгреА рдХреЗрд▓реЗрд▓рд╛ рдХреЛрдб. рд╣реА рд╕рд░реНрд╡рд╛рдд рд╡рд╛рдИрдЯ рд╕рд╡рдпреАрдВрдкреИрдХреА рдПрдХ рдЖрд╣реЗ, рдХрд╛рд░рдг рдХрд╛рдп рд╣реЛрддреЗ рдХреА рддреБрдореНрд╣реА рдПрдЦрд╛рджреНрдпрд╛ рдЧреЛрд╖реНрдЯреАрд╡рд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддрд╛ рдЖрдгрд┐ рддреА рд╡рд┐рд╕рд░рддрд╛, рдЖрдгрд┐ рдирдВрддрд░ рдЗрддрд░ рд╡рд┐рдХрд╕рдХрд╛рдВрдирд╛ рддреА рд╣рдЯрд╡рдгреНрдпрд╛рдЪреЗ рдзреИрд░реНрдп рдирд╕рддреЗ (рдЕрдЦреЗрд░, рддреЗ рдХрд╛рд╣реАрддрд░реА рдореМрд▓реНрдпрд╡рд╛рди рдЕрд╕рд▓реНрдпрд╛рд╕ рдХрд╛рдп?).
// public void someMethod(SomeObject obj) {
// .....
// }
рдкрд░рд┐рдгрд╛рдореА, рдЯрд┐рдкреНрдкрдгреА рдХреЗрд▓реЗрд▓рд╛ рдХреЛрдб рдХрдЪрд▒реНрдпрд╛рд╕рд╛рд░рдЦрд╛ рдЬрдорд╛ рд╣реЛрддреЛ. рдХреЛрдгрддреНрдпрд╛рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреАрдд рдЖрдкрдг рдЕрд╕рд╛ рдХреЛрдб рд╕реЛрдбреВ рдирдпреЗ. рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЦрд░реЛрдЦрд░ рдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рдЖрд╡реГрддреНрддреА рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реАрдмрджреНрджрд▓ рд╡рд┐рд╕рд░реВ рдирдХрд╛.
рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ - рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдЬреНрдпрд╛ рдПрдЦрд╛рджреНрдпрд╛ рдЧреЛрд╖реНрдЯреАрдЪреЗ рдЕрддреНрдпрдВрдд рдХреНрд▓рд┐рд╖реНрдЯ рдкрджреНрдзрддреАрдиреЗ рд╡рд░реНрдгрди рдХрд░рддрд╛рдд.
/*
* Start with an array large enough to store
* all the data bytes (plus filter bytes) with a cushion, plus 300 bytes
* for header data
*/
this.dataBytes = new byte[(this.size * (this.deep + 1) * 2)+300];
рдЯрд┐рдкреНрдкрдгреАрдиреЗ рдХреЛрдб рд╕реНрдкрд╖реНрдЯ рдХреЗрд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ. рддреНрдпрд╛рд▓рд╛ рд╕реНрд╡рддрдГрдЪ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрд╛рдЪреА рдЧрд░рдЬ рдирд╕рд╛рд╡реА. рдордЧ рдЗрдереЗ рдХрд╛рдп рдЪреВрдХ рдЖрд╣реЗ? "рдлрд┐рд▓реНрдЯрд░ рдмрд╛рдЗрдЯреНрд╕" рдореНрд╣рдгрдЬреЗ рдХрд╛рдп? рддреЗ "+1" рдХрд╢рд╛рдмрджреНрджрд▓ рдЖрд╣реЗ? рдирдХреНрдХреА 300 рдХрд╛?
- рджреЗрдЦрд░реЗрдЦреАрд╕рд╛рдареА рд╕реЛрдкреНрдпрд╛ рд╢реИрд▓реАрдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рд╛: рдЕрддрд┐рд╢рдп рдлреЕрдиреНрд╕реА рдЖрдгрд┐ рд╡рд┐рджреЗрд╢реА рд╢реИрд▓реАрдЪреА рджреЗрдЦрднрд╛рд▓ рдХрд░рдгреЗ рддреНрд░рд╛рд╕рджрд╛рдпрдХ рдЖрдгрд┐ рд╡реЗрд│рдЦрд╛рдК рдЖрд╣реЗ.
- рдПрдХрд▓ рдУрд│реАрдВрдЪрд╛ рд╕рдВрджрд░реНрдн рджреЗрдгрд╛рд▒реНрдпрд╛ рдУрд│реАрдЪреНрдпрд╛ рд╢реЗрд╡рдЯрдЪреНрдпрд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рд╡рд╛рдкрд░реВ рдирдХрд╛: рдкрд░рд┐рдгрд╛рдо рдореНрд╣рдгрдЬреЗ рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдЪрд╛ рдореЛрдард╛ рдвреАрдЧ. рдЗрддрдХреЗрдЪ рдХрд╛рдп, рдкреНрд░рддреНрдпреЗрдХ рдУрд│реАрд╕рд╛рдареА рдЕрд░реНрдердкреВрд░реНрдг рдЯрд┐рдкреНрдкрдгреА рдХрд░рдгреЗ рдХрдареАрдг рдЖрд╣реЗ.
- рддреБрдореНрд╣реА рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рд╣рд┐рддрд╛ рддреЗрд╡реНрд╣рд╛, "рдХрд╕реЗ" рдирд╛рд╣реА рддрд░ "рдХрд╛" рдкреНрд░рд╢реНрдирд╛рдЪреЗ рдЙрддреНрддрд░ рджреЗрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рд╛.
- рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдорд╛рд╣рд┐рддреА рдЯрд╛рд│рд╛. рдореА рд╡рд░ рдореНрд╣рдЯрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рдЖрдореНрд╣рд╛рд▓рд╛ рдЯрд┐рдкреНрдкрдгреАрд╕рд╛рдареА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА: рдЯрд┐рдкреНрдкрдгреА рд╕реНрд╡рддрдГрдЪ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЖрд╣реЗ.
- рддреБрдореНрд╣реА рдПрдХрдХ рдЖрдгрд┐ рдореВрд▓реНрдп рд╢реНрд░реЗрдгреА рдЯрд┐рдкрдгреНрдпрд╛рд╕рд╛рдареА рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛.
- рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рддреНрдпрд╛рдВрдиреА рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреЛрдбрдЪреНрдпрд╛ рдЬрд╡рд│ рдареЗрд╡рд╛.