ÀÛ¾÷°ø°£¿¡¼ ÀÚ¿øÀ» ¼öÁ¤ÇØ¾ß ÇÒ °æ¿ì ´Ù¸¥ Ç÷¯±×ÀÎÀÌ µ¿ÀÏÇÑ ÀÚ¿ø¿¡ ´ëÇØ ÀÛ¾÷ ÁßÀÏ ¼ö ÀÖÀ½À» °í·ÁÇØ¾ß ÇÕ´Ï´Ù. ÀÚ¿ø API´Â ÀÛ¾÷°ø°£ÀÇ º¯°æ»çÇ×À» °è¼ÓÇØ¼ Ç÷¯±×Àο¡ ¾Ë¸®°í ¿©·¯ Ç÷¯±×ÀÎÀÌ µ¿½Ã¿¡ µ¿ÀÏÇÑ ÀÚ¿øÀ» ¼öÁ¤ÇÏÁö ¾Êµµ·Ï ÇÏ´Â °·ÂÇÑ ¸ÞÄ¿´ÏÁòÀ» Á¦°øÇÕ´Ï´Ù. °¡´ÉÇϸé ÀÛ¾÷°ø°£¿¡ ´ëÇÑ Ç÷¯±×ÀÎÀÇ ¼öÁ¤»çÇ×Àº ÀÛ¾÷°ø°£ ½ÇÇà ÇÁ·Î±×·¥¿¡¼ ÀÛ¾÷ ´ÜÀ§·Î Àϰý󸮵Ǿî¾ß ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ½ÇÇà ÇÁ·Î±×·¥Àº º¯°æÀ¸·Î »ý¼ºµÇ´Â ´Ù·®ÀÇ º¯°æ ¾Ë¸²À» ÁÙÀÌ´Â µ¥ µµ¿òÀÌ µË´Ï´Ù. ÀÌ ½ÇÇà ÇÁ·Î±×·¥À» »ç¿ëÇÏ¸é ´Ù¸¥ Ç÷¯±×ÀÎÀÌ ÀÛ¾÷°ø°£ÀÇ µ¿ÀÏÇÑ ºÎºÐÀ» º¯°æÇÏÁö ¸øÇÏ°Ô Àá±æ ¼ö ÀÖµµ·Ï ¼öÁ¤ÇÒ ÀÛ¾÷°ø°£ÀÇ ºÎºÐÀ» ¼±¾ðÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
IWorkspaceRunnableÀÇ
ÇÁ·ÎÅäÄÝÀº ¸Å¿ì ´Ü¼øÇÕ´Ï´Ù. ÀÛ¾÷°ø°£ ½ÇÇà ÇÁ·Î±×·¥Àº Àå±â ½ÇÇà Á¶ÀÛ ¶Ç´Â Ç÷§Æû ÀÛ¾÷°ú
À¯»çÇÕ´Ï´Ù. ½ÇÁ¦ ÀÛ¾÷Àº
½ÇÇà ¸Þ¼Òµå¿¡¼ ¼öÇàµÇ¸ç, ÁøÇà »óŰ¡ Á¦°øµÈ
IProgressMonitor·Î
º¸°íµË´Ï´Ù. ÀÛ¾÷°ø°£À»
Á¶ÀÛÇÏ´Â ÄÚµå´Â ½ÇÇà ¸Þ¼Òµå¿¡¼ ¼öÇàµË´Ï´Ù.
IWorkspaceRunnable myRunnable =
new IWorkspaceRunnable() {
public void run(IProgressMonitor monitor) throws CoreException {
//do the actual work in here
...
}
}
Äڵ带 ½ÇÇàÇÒ ½Ã°£ÀÌ µÇ¸é Ç÷¯±×ÀÎÀº ÀÛ¾÷°ø°£ÀÌ Ç÷¯±×ÀÎÀ» ´ë½ÅÇÏ¿© Äڵ带 ½ÇÇàÇϵµ·Ï ¾Ë¸³´Ï´Ù. ÀÌ ¹æ¹ýÀ¸·Î
ÀÛ¾÷°ø°£Àº ÇÊ¿äÇÑ º¯°æ À̺¥Æ®¸¦ »ý¼ºÇÏ¿© µÎ °³ÀÇ Ç÷¯±×ÀÎÀÌ µ¿½Ã¿¡ µ¿ÀÏÇÑ ÀÚ¿øÀ» ¼öÁ¤ÇÏÁö ¾Êµµ·Ï ÇÒ ¼ö
ÀÖ½À´Ï´Ù. (»ç¿ëÀÚÀÇ Ç÷¯±×ÀÎÀÌ ÀÛ¾÷°ø°£À» ¼öÁ¤Çϱâ À§ÇØ ¹è°æ ÀÛ¾÷ ¹× µ¿½Ã¼º ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇÏÁö ¾Ê´Â°æ¿ì¿¡µµ
´Ù¸¥ Ç÷¯±×ÀÎÀº À̸¦ ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.)
IWorkspace ÇÁ·ÎÅäÄÝÀº ÀÛ¾÷°ø°£ ½ÇÇà ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ¼±È£µÇ´Â ±â¼úÀº ½ºÄÉÁÙ¸µ ±ÔÄ¢À» Á¦°øÇϰí ÀÚ¿ø º¯°æ À̺¥Æ®°¡ ºê·Îµåij½ºÆ®µÇ´Â ¹æ¹ýÀ» ÁöÁ¤ÇÏ´Â Àå±â ½ÇÇà ¸Þ¼Òµå ¾ç½ÄÀ» »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.
ÀÛ¾÷°ø°£ ½ÇÇà ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§ ½ºÄÉÁÙ¸µ ±ÔÄ¢À» ÁöÁ¤Çϸé ÀÚ¿ø º¯°æ»çÇ×ÀÌ ´Ù¸¥ ½º·¹µå¿¡¼ ¹ß»ýÇÏ´Â ÀÛ¾÷°ø°£ º¯°æ»çÇ×°ú Ãæµ¹ÇÏ´ÂÁö ¿©ºÎ¸¦ ÀÛ¾÷°ø°£ÀÌ ÆÇº°ÇÒ ¼ö ÀÖ½À´Ï´Ù. (½ºÄÉÁÙ¸µ ±ÔÄ¢ ¹× ISchedulingRule ÇÁ·ÎÅäÄÝÀ» ´Ù·ç´Â °³¿ä´Â ½ºÄÉÁÙ¸µ ±ÔÄ¢À» ÂüÁ¶ÇϽʽÿÀ.) ´ÙÇàÈ÷µµ IResource ÇÁ·ÎÅäÄÝ¿¡´Â ISchedulingRuleÀÇ ÇÁ·ÎÅäÄÝÀÌ Æ÷ÇԵǾî Àִµ¥, À̰ÍÀº ÀÚ¿øÀÌ Á¾Á¾ ÀÚ¿ø ÀÚü¿¡ ´ëÇÑ ½ºÄÉÁÙ¸µ ±ÔÄ¢À¸·Î »ç¿ëµÉ ¼ö ÀÖÀ½À» ÀǹÌÇÕ´Ï´Ù.
È¥µ¿µÇ½Ê´Ï±î? ÄÚµå´Â ÀÌ Á¡À» ¸íÈ®È÷ ÇÏ´Â µ¥ µµ¿òÀÌ µË´Ï´Ù. Ç÷¯±×ÀÎÀÌ Æ¯Á¤ ÇÁ·ÎÁ§Æ®¿¡¼ ÀÏ·ÃÀÇ ÀÚ¿øÀ»
¼öÁ¤ÇÒ Áغñ°¡ µÇ¾î ÀÖ´Ù°í °¡Á¤ÇØ º¸½Ê½Ã¿À. Ç÷¯±×ÀÎÀº ÇÁ·ÎÁ§Æ® ÀÚü¸¦ º¯°æ»çÇ× ÀÛ¼ºÀ» À§ÇÑ ½ºÄÉÁÙ¸µ ±ÔÄ¢À¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ ½º´ÏÆêÀº ¾Õ¿¡¼ ÀÛ¼ºÇÑ ÀÛ¾÷°ø°£ ½ÇÇà ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.
IWorkspace workspace = ResourcesPlugin.getWorkspace();
workspace.run(myRunnable, myProject, IWorkspace.AVOID_UPDATE, null);
½ÇÇà ÇÁ·Î±×·¥Àº ÀÛ¾÷°ø°£À¸·Î Àü´ÞµÇ°í Äڵ尡 Á¶ÀÛ ÁßÀÎ ÇÁ·ÎÁ§Æ®·Î Àü´ÞµË´Ï´Ù. ÀÌ·¸°Ô ÇÏ¿©
½ÇÇà ÇÁ·Î±×·¥ÀÇ ¸ðµç º¯°æ»çÇ×ÀÌ myProject·Î Á¦ÇѵÊÀ» ÀÛ¾÷°ø°£¿¡ ¾Ë¸³´Ï´Ù. ´Ù¸¥ ½º·¹µå°¡
myProject¸¦ º¯°æÇϱâ À§ÇÑ ¸ðµç ¿äûÀº ÀÌ ½ÇÇà ÇÁ·Î±×·¥ÀÌ ¿Ï·áµÉ ¶§±îÁö ºí·ÏµË´Ï´Ù. ¸¶Âù°¡Áö·Î ÀÌ È£ÃâÀº
ÀϺΠ´Ù¸¥ ½º·¹µå°¡ ÀÌ¹Ì myProject¸¦ ¼öÁ¤ ÁßÀÎ °æ¿ì ºí·ÏµË´Ï´Ù. ½ÇÇà ÇÁ·Î±×·¥¿¡¼ ¼öÁ¤ÇÒ ÀÚ¿ø Æ®¸® ºÎºÐÀ» ÁöÁ¤ÇÏ¸é ´Ù¸¥ ½º·¹µå°¡ ÀÛ¾÷°ø°£ÀÇ ´Ù¸¥ ºÎºÐÀ» °è¼ÓÇØ¼ ¼öÁ¤ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ÀÚ¿ø ±ÔÄ¢ÀÌ ½ÇÇà ÇÁ·Î±×·¥¿¡¼
¼öÇà ÁßÀÎ ÀÛ¾÷°ú ÀÏÄ¡ÇÏ´ÂÁö¸¦ È®ÀÎÇÏ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù. ½ºÄÉÁÙ¸µ ±ÔÄ¢ÀÇ ¹üÀ§ ¹Û¿¡ ÀÖ´Â
ÀÚ¿ø¿¡ ¾×¼¼½ºÇÏ·Á°í ½ÃµµÇÏ¸é ¿¹¿Ü°¡ ¹ß»ýÇÕ´Ï´Ù.
½ÇÇà ¸Þ¼Òµå¿¡ ´ëÇÑ ¼¼ ¹øÂ° ¸Å°³º¯¼ö´Â ÁÖ±âÀûÀÎ ¸ðµç ÀÚ¿ø º¯°æ À̺¥Æ®°¡ ÀÌ È£Ãâ ¹üÀ§ ³»¿¡ ºê·Îµåij½ºÆ®µÇ¾î¾ß ÇÏ´ÂÁö ¿©ºÎ¸¦ ÁöÁ¤ÇÕ´Ï´Ù. IWorkspace.AVOID_UPDATE¸¦ »ç¿ëÇÏ¸é ½ÇÇà ÇÁ·Î±×·¥ÀÌ ½ÇÇà ÁßÀÎ µ¿¾È ¸ðµç ÀÚ¿ø º¯°æ À̺¥Æ®¸¦ ¾ïÁ¦ÇÏ¿© º¯°æ Á¾·á ½ÃÁ¡¿¡ ÇϳªÀÇ À̺¥Æ®¸¦ ºê·Îµåij½ºÆ®Çϵµ·Ï Ç÷§Æû¿¡ ¾Ë¸³´Ï´Ù. ÀÌ È£Ãâ Áß ½ÇÇà ÇÁ·Î±×·¥¿¡ ÀÛ¼ºµÈ ´Ù¸¥ ¸ðµç ½ÇÇà ÇÁ·Î±×·¥Àº »óÀ§ Àϰýó¸® Á¶ÀÛÀÇ ÀϺηΠ°£Áֵ˴ϴÙ. ÇØ´ç ½ÇÇà ÇÁ·Î±×·¥¿¡¼ ÀÛ¼ºµÈ ÀÚ¿ø º¯°æ»çÇ×Àº »óÀ§ÀÇ ÀÚ¿ø º¯°æ ¾Ë¸²¿¡ Ç¥½ÃµË´Ï´Ù.
À§ÀÇ ¿¹Á¦¿¡¼ ½ÇÇà ÇÁ·Î±×·¥ ³»ºÎÀÇ Äڵ常 ƯÁ¤ ÇÁ·ÎÁ§Æ®ÀÇ ÀÚ¿øÀ» ¼öÁ¤ÇßÀ½À» °¡Á¤Çß½À´Ï´Ù.
µû¶ó¼ ½ÇÇà ÇÁ·Î±×·¥¿¡ ½ºÄÉÁÙ¸µ ±ÔÄ¢À» ÁöÁ¤ÇÏ´Â °ÍÀÌ ¸Å¿ì ½±½À´Ï´Ù. ½ÇÁ¦·Î´Â ƯÁ¤ º¯°æ»çÇ×À¸·Î ¿µÇâÀ» ¹Þ´Â
ÀÛ¾÷°ø°£ÀÇ ºÎºÐÀ» °è»êÇÏ´Â °ÍÀÌ ´õ ¾î·Á¿ï ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ÇÑ ÇÁ·ÎÁ§Æ®¿¡¼ ´Ù¸¥ ÇÁ·ÎÁ§Æ®·Î
ÀÚ¿øÀ» À̵¿½ÃŰ¸é µÎ ÇÁ·ÎÁ§Æ®°¡ ¸ðµÎ ¿µÇâÀ» ¹Þ½À´Ï´Ù. IResourceRuleFactory´Â
ƯÁ¤ Á¾·ùÀÇ ÀÚ¿ø º¯°æ»çÇ׿¡ ÀûÀýÇÑ ÀÚ¿ø ±ÔÄ¢À» °è»êÇÏ´Â µ¥ µµ¿òÀÌ µË´Ï´Ù. ÀÛ¾÷°ø°£ ÀÚü¿¡¼
ÀÚ¿ø ±ÔÄ¢ ÆÑÅ丮¸¦ °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù.
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IResourceRuleFactory ruleFactory = workspace.getRuleFactory();
ÆÑÅ丮´Â ´Ù¾çÇÑ Á¾·ùÀÇ Á¶ÀÛ¿¡ ÀûÀýÇÑ ±ÔÄ¢À» Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù. ½ÇÇà ÇÁ·Î±×·¥ÀÌ ÇÑ À§Ä¡¿¡¼
´Ù¸¥ À§Ä¡·Î ÀÚ¿øÀ» À̵¿ÇÏ´Â °æ¿ì ´ÙÀ½°ú °°ÀÌ ÀÌ Á¶ÀÛ¿¡ ÀûÀýÇÑ ±ÔÄ¢À» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.
ISchedulingRule movingRule = ruleFactory.moveResource(sourceResource, destinationResource);
workspace.run(myRunnable, movingRule, IWorkspace.AVOID_UPDATE, null);
»ç¿ë °¡´ÉÇÑ ±ÔÄ¢ ¸ñ·ÏÀº IResourceRuleFactoryÀÇ
javadocÀ» ÂüÁ¶ÇϽʽÿÀ. ÀÚ¿ø Ç÷¯±×ÀÎÀº ÀÌ ±ÔÄ¢ ÀÚü¸¦ »ç¿ëÇÏ¿© ´ëºÎºÐÀÇ ÀÚ¿ø Á¶ÀÛÀ» ±¸ÇöÇÕ´Ï´Ù.
ÀÌ·¯ÇÑ ±ÔÄ¢ ¸Þ¼Òµå¸¦ ÂüÁ¶ÇÏ´Â Äڵ带 ã¾Æº¸¸é ½ÇÁ¦·Î ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» ½Ã¿¬ÇÏ´Â µ¥ µµ¿òÀÌ µË´Ï´Ù.
º¹¼ö ±ÔÄ¢Àº
MultiRuleÀ» »ç¿ëÇÏ¿©
°áÇÕÇÒ ¼ö ÀÖ½À´Ï´Ù.
ISchedulingRule movingRule = ruleFactory.moveResource(sourceResource, destinationResource);
ISchedulingRule modifyRule = ruleFactory.modifyResource(destinationResource);
workspace.run(myRunnable, MultiRule.combine(movingRule, modifyRule), IWorkspace.AVOID_UPDATE, null);
IWorkspaceÀÇ
´Ü±â ½ÇÇà ¸Þ¼Òµå ¾ç½Äµµ »ç¿ë °¡´ÉÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå´Â ¿ª ȣȯ¼ºÀ» À§ÇØ À¯ÁöµË´Ï´Ù. ´Ü±â ¾ç½Ä¿¡´Â ±ÔÄ¢ ¶Ç´Â °»½Å
Ç÷¡±×°¡ Æ÷ÇԵǾî ÀÖÁö ¾Ê½À´Ï´Ù.
workspace.run(myRunnable, null);
À§ Ç׸ñÀº ½ÇÁ¦·Î È£Ãâ°ú µ¿ÀÏÇÕ´Ï´Ù.
workspace.run(myRunnable, workspace.getRoot(), IWorkspace.AVOID_UPDATE, null);
ÀÛ¾÷°ø°£ ·çÆ®¸¦ ½ºÄÉÁÙ¸µ ±ÔÄ¢À¸·Î ÁöÁ¤ÇÏ¸é ½ÇÇà ÇÁ·Î±×·¥ÀÌ ¿Ï·áµÉ ¶§±îÁö Àüü ÀÛ¾÷°ø°£¿¡ Àá±ÝÀÌ
Àû¿ëµË´Ï´Ù. À̰ÍÀº ÀÛ¾÷°ø°£ °»½ÅÀ» ¼öÇàÇÏ´Â °¡Àå ÀüÇüÀûÀÎ ¹æ¹ýÀÌÁö¸¸ ´Ù¸¥ µ¿½Ã¼º ±â¹Ý Ç÷¯±×Àο¡´Â
º°·Î ÀûÇÕÇÏÁö ¾Ê½À´Ï´Ù.