ÀÛ¾÷°ø°£¿¡¼ ÀÚ¿øÀ» ¼öÁ¤ÇØ¾ß ÇÒ °æ¿ì ´Ù¸¥ Ç÷¯±×ÀÎÀÌ µ¿ÀÏÇÑ ÀÚ¿ø¿¡ ´ëÇØ ÀÛ¾÷ ÁßÀÏ ¼ö ÀÖÀ½À» °í·ÁÇØ¾ß ÇÕ´Ï´Ù. ÀÚ¿ø 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¸¦ ¼öÁ¤ ÁßÀÎ °æ¿ì ºí·ÏµË´Ï´Ù. ½ÇÇà ÇÁ·Î±×·¥¿¡¼ ¼öÁ¤ÇÒ ÀÚ¿ø Æ®¸® ºÎºÐÀ» ÁöÁ¤ÇÏ¸é ´Ù¸¥ ½º·¹µå°¡ ÀÛ¾÷°ø°£ÀÇ ´Ù¸¥ ºÎºÐÀ» °è¼ÓÇØ¼ ¼öÁ¤ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ÀÚ¿ø ±ÔÄ¢ÀÌ ½ÇÇà ÇÁ·Î±×·¥¿¡¼ ¼öÇà ÁßÀÎ ÀÛ¾÷°ú ÀÏÄ¡ÇÏ´ÂÁö¸¦ È®ÀÎÇÏ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù. ³Î(null)ÀÌ ¾Æ´Ñ ½ºÄÉÁÙ¸µ ±ÔÄ¢ÀÌ »ç¿ëµÇ´Â °æ¿ì ½ºÄÉÁÙ¸µ ±ÔÄ¢ÀÇ ¹üÀ§ ¹Û¿¡ ÀÖ´Â ÀÚ¿ø¿¡ ¾×¼¼½ºÇÏ·Á°í ½ÃµµÇÏ¸é ¿¹¿Ü°¡ Æ®¸®°ÅµË´Ï´Ù.
µÎ °¡Áö Ư¼ö ½ºÄÉÁÙ¸µ ±ÔÄ¢À» °í·ÁÇØ¾ß ÇÕ´Ï´Ù. ¸ÕÀú, ½ºÄÉÁÙ¸µ ±ÔÄ¢À¸·Î IWorkspaceRoot ÀνºÅϽº¸¦ »ç¿ëÇÏ´Â °æ¿ì À̰ÍÀº ½º·¹µå°¡ Æ®¸®¿¡ ÀÖ´Â ¸ðµç ÀÚ¿ø¿¡ ´ëÇÑ ¾×¼¼½º¸¦ Â÷´ÜÇÑ´Ù´Â ÀǹÌÀÔ´Ï´Ù. ÇÑ ½º·¹µå¿¡ ·çÆ® ±ÔÄ¢ÀÌ º¸À¯µÇ´Â ¹Ý¸é ´Ù¸¥ ½º·¹µå¿¡¼´Â ÀÛ¾÷°ø°£À» ¼öÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù. ¹Ý´ë·Î, null ±ÔÄ¢Àº ½º·¹µå°¡ Æ®¸®¿¡¼ ÀÚ¿ø¿¡ ´ëÇÑ ¾×¼¼½º¸¦ Â÷´ÜÇÏÁö ¾ÊÀ½À» Ç¥½ÃÇÕ´Ï´Ù. ³Î(null) ±ÔÄ¢À» °¡Áø ½º·¹µå°¡ ÀÛ¾÷°ø°£À» ÀÚÀ¯·Ó°Ô ¼öÁ¤ÇÒ ¼ö ÀÖÀ¸¸é ´Ù¸¥ ½º·¹µå´Â ÀÚüÀûÀÎ ¼öÁ¤À» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. IWorkspaceRoot ¹× null ½ºÄÉÁÙ¸µ ±ÔÄ¢Àº µ¿½Ã¼º ½ºÆåÆ®·³ÀÇ ¹Ý´ëÂÊ ³¡À» Á¡À¯ÇÕ´Ï´Ù. IWorkspaceRoot¸¦ »ç¿ëÇÏ´Â °æ¿ì µ¿½Ã¼ºÀÌ ¾øÀ¸¸ç ÇÑ ¹ø¿¡ ÇϳªÀÇ ½º·¹µå¸¸ ÀÛ¾÷°ø°£À» ¼öÁ¤ÇÕ´Ï´Ù. null ±ÔÄ¢À» »ç¿ëÇÏ´Â °æ¿ì ¸ðµç ½º·¹µå¿¡¼ ÀÛ¾÷°ø°£À» µ¿½Ã¿¡ ¼öÁ¤ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÃÖ´ë µ¿½Ã¼ºÀ» °®½À´Ï´Ù.
½ÇÇà ¸Þ¼Òµå¿¡ ´ëÇÑ ¼¼ ¹øÂ° ¸Å°³º¯¼ö´Â ÁÖ±âÀûÀÎ ¸ðµç ÀÚ¿ø º¯°æ À̺¥Æ®°¡ ÀÌ È£Ãâ ¹üÀ§ ³»¿¡ ºê·Îµå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);
ÀÛ¾÷°ø°£ ·çÆ®¸¦ ½ºÄÉÁÙ¸µ ±ÔÄ¢À¸·Î ÁöÁ¤ÇÏ¸é ½ÇÇà ÇÁ·Î±×·¥ÀÌ ¿Ï·áµÉ ¶§±îÁö Àüü ÀÛ¾÷°ø°£¿¡ Àá±ÝÀÌ Àû¿ëµË´Ï´Ù. À̰ÍÀº ÀÛ¾÷°ø°£ °»½ÅÀ» ¼öÇàÇÏ´Â °¡Àå ÀüÇüÀûÀÎ ¹æ¹ýÀÌÁö¸¸ ´Ù¸¥ µ¿½Ã¼º ±â¹Ý Ç÷¯±×Àο¡´Â º°·Î ÀûÇÕÇÏÁö ¾Ê½À´Ï´Ù.